我收到一个包含 30 个字段的 JSON,我的实体是从这个 JSON 构建的。 问题是:不应更新两个字段(两个日期)。
如果我使用 entity.merge
,两个字段都会更新。
如何避免这 2 个字段被更新?
也许使用 criterion.Example?
有没有什么方法可以在我不编写大量 HQL 的情况下做到这一点?
最佳答案
如果您永远不想更新这两个字段,您可以用 @Column(updatable=false)
标记它们:
@Column(name="CREATED_ON", updatable=false)
private Date createdOn;
一旦你加载了一个实体并修改了它,只要当前的Session
或EntityManager
是打开的,Hibernate 就可以通过脏检查机制跟踪变化。然后,在 flush
期间,将执行 SQL
更新。
如果您不喜欢所有列都包含在 UPDATE
语句中,您可以使用动态更新:
@Entity
@DynamicUpdate
public class Product {
//code omitted for brevity
}
然后,UPDATE
语句中将只包含修改的列。
关于java - 如何使用 Hibernate 只更新所有实体属性的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39915906/