在使用Hibernate的時候, 我們發現如果使用
session.update(entity)
來更新一個對象的屬性值的時候, 就會出現一個問題: 我想更新一個字段, 但是更新之后發現數據庫中除了主鍵之外的其他字段全部變成null, 問題就解釋到這里
解決方案:
-
XML: 使用dynamic-update=true
- 位置: *.hbm.xml中的class標簽的屬性dynamic-update
-
Annotation: 使用@DynamicUpdate(true)
- 位置: *.java實體類上打上標簽
? 注意: DynamicUpdate: 只更新同一個session里面,同一個對象有改變的字段。說白了, 就是在更新某條記錄之前, 先把這條記錄從數據庫查出來, 那么這條數據就在session(一級緩存)中, 我們再去修改這個對象的數據即可;
DynamicInsert: 只是插入那些不為空的字段;