Stuck on the same problem在null
更新数据库时是否有任何忽略Hibernate
值的方法?
每当你调用update();对于Session,它还将更新在对象中找到的空值。
示例:
User user = new User();
user.setUserId(5);
user.setUserName("Maarten");
user.setUserFirstName(null); // but in database this value is not null
session.update( user);
OR
session.saveOrUpdate( user);
DB现在将更新用户,但会将用户firstname设置为null(因为它在对象中为null)。
Hibernate中是否有任何方法或方法可以避免这种情况(我不想触发select / update查询来设置bean)?它将忽略空值?
答案 0 :(得分:3)
dynamic-update属性告诉Hibernate是否在SQL UPDATE语句中包含未修改的属性。
答案 1 :(得分:0)
这取决于您希望控制的抽象级别以及对象的业务规则:
无论如何,如果您在较低级别定义您的必需品,例如"在更新查询"中不包含空值,您可以使用以下内容:
答案 2 :(得分:0)
选项之一是,在会话中使用load
方法get(object)
Bean,然后设置/更改值。但这带来了一个 extra 调用数据库的开销。 或者,如果进行额外的通话至关重要,则可以创建自定义查询。
编辑:如果bean
被缓存,则get(object)
不会对性能造成影响。