使用休眠更新表时忽略实体 Bean 的空值

2022-09-03 07:58:32

卡在同样的问题上在 中更新数据库时,是否有任何方法可以忽略值?nullHibernate

每当您调用 update();的会话中,它还将更新在对象中找到的空值。

例:

User user = new User();
user.setUserId(5);
user.setUserName("Maarten");
user.setUserFirstName(null); // but in database this value is not null

session.update( user);

session.saveOrUpdate( user);

数据库现在将更新用户,但会将用户名字设置为 null(因为它在对象中为 null)。

在Hibernate中有什么方法或方法来避免这种情况(我不想触发选择/更新查询来设置bean)?它将忽略空值?


答案 1

休眠-动态-更新

动态更新属性告诉休眠是否在 SQL UPDATE 语句中包含未修改的属性。


答案 2

其中一个选项是,使用会话中的bean方法,然后设置/更改值。但这会带来对数据库进行一次额外调用的开销。或者,如果进行额外调用至关重要,则可以创建自定义查询。loadget(object)

编辑:如果被缓存,则不会对性能造成影响。beanget(object)


推荐