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

Dee*_*pak 1 sql hibernate jpa

我正在使用JPA和Hibernate.当我修改对象的一个​​属性并更新它时; 生成的SQL显示所有列都已更新!为什么不只更新修改后的列?有没有办法实现这一点,因为我觉得会更加优化.

Man*_*uPK 5

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

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

<class ... table="your_table" .... dynamic-update="true">
Run Code Online (Sandbox Code Playgroud)

在具有许多列(传统设计)或包含大量数据的大型表中,这将对系统性能产生很大影响.它可以有一些性能影响,告诉这里.因此,在实现代码之前,请先测量代码的性能.

请阅读此处的API 以获取更多信息.

如果您正在使用注释,

@org.hibernate.annotations.Entity(selectBeforeUpdate=true)
Run Code Online (Sandbox Code Playgroud)

它是一个特定于hibernate的注释,在JPA中不可用.这是一篇链接到细节的好文章.