admin

为什么在JPA Hibernate更新查询; 所有属性都将在SQL中更新

sql

我在Hibernate中使用JPA。当我修改一个对象的一个​​属性并更新它时;生成的SQL显示所有列正在更新!为什么不只更新已修改的列?有没有一种方法可以实现这一目标,因为我认为它将得到更好的优化。


阅读 176

收藏
2021-07-01

共1个答案

admin

默认情况下,休眠包含更新查询中的所有字段。如果要排除此错误,请使用 自定义更新HQL ,也可以配置hibernate以
在更新查询中排除未修改的字段,本文所述

这是通过添加dynamic-update="true"类映射来完成的。

<class ... table="your_table" .... dynamic-update="true">

在具有许多列的大型表中(旧式设计)或包含大量数据,这将对系统性能产生重大影响。它可以有一些性能影响,告诉这里。因此,在实施代码之前,请先评估其性能。

此处阅读API
以获取更多信息。

如果您使用的是注释,

@org.hibernate.annotations.Entity(selectBeforeUpdate=true)

它是特定于休眠的注释,在JPA中不可用。这是一篇链接到详细信息的好文章

2021-07-01