在使用Hibernate的时候, 我们发现如果使用
session.update(entity)
来更新一个对象的属性值的时候, 就会出现一个问题: 我想更新一个字段, 但是更新之后发现数据库中除了主键之外的其他字段全部变成null, 问题就解释到这里
解决方案:
-
XML: 使用dynamic-update=true
- 位置: *.hbm.xml中的class标签的属性dynamic-update
-
Annotation: 使用@DynamicUpdate(true)
- 位置: *.java实体类上打上标签
☛ 注意: DynamicUpdate: 只更新同一个session里面,同一个对象有改变的字段。说白了, 就是在更新某条记录之前, 先把这条记录从数据库查出来, 那么这条数据就在session(一级缓存)中, 我们再去修改这个对象的数据即可;
DynamicInsert: 只是插入那些不为空的字段;