在Hibernate 中,有時我們只需要更新部分字段,此時如果使用update()方法,會將所有字段都更新,對於沒有set的字段,就會設置成NULL,如果這些字段裡面有非空的字段就會報錯。
解決的方法可以直接寫HQL語句,但是如果字段較多,並且更新的字段是不確定的時候,直接寫HQL語句就顯得比較麻煩。
另一種方法是在XML文件中設置dynamic-update="true",這樣設置以後,只對set了的字段更新,沒有set的字段就不會更新。
<class name="com.hzhi.entity.Person" table="person" dynamic-update="true">
還有一種有效的方法就是先根據需要更新的記錄主鍵,找出這條記錄,根據提交的參數set相應的字段,然後再update()。
// 根據用戶提交的ID找出person2
int id = person.getId();
Person person2 = xkmpService.findById(id);
// 設置需要更新的字段的值到person2
person2.setAge(person.getAge());
// 更新person2
xkmpService.updatePerson(person2);
Hibernate3.1.2_中文文檔PDF http://www.linuxidc.com/Linux/2016-02/128462.htm
Hibernate學習入門教程 http://www.linuxidc.com/Linux/2015-08/121498.htm
在Hibernate中開啟日志 http://www.linuxidc.com/Linux/2015-07/120499.htm
Hibernate+JUnit測試實體類生成數據庫表 http://www.linuxidc.com/Linux/2015-07/120161.htm
Hibernate整體理解 http://www.linuxidc.com/Linux/2014-07/104405.htm
Hibernate的映射機制 http://www.linuxidc.com/Linux/2014-12/110265.htm
Hibernate 的詳細介紹:請點這裡
Hibernate 的下載地址:請點這裡