java - 如何使用 Hibernate 只更新所有实体属性的一部分

标签 java json hibernate jpa orm

我收到一个包含 30 个字段的 JSON,我的实体是从这个 JSON 构建的。 问题是:不应更新两个字段(两个日期)。

如果我使用 entity.merge,两个字段都会更新。

如何避免这 2 个字段被更新?

也许使用 criterion.Example?

有没有什么方法可以在我不编写大量 HQL 的情况下做到这一点?

最佳答案

如果您永远不想更新这两个字段,您可以用 @Column(updatable=false) 标记它们:

@Column(name="CREATED_ON", updatable=false)
private Date createdOn;

一旦你加载了一个实体并修改了它,只要当前的SessionEntityManager 是打开的,Hibernate 就可以通过脏检查机制跟踪变化。然后,在 flush 期间,将执行 SQL 更新。

如果您不喜欢所有列都包含在 UPDATE 语句中,您可以使用动态更新:

@Entity
@DynamicUpdate
public class Product {
   //code omitted for brevity
}

然后,UPDATE 语句中将只包含修改的列。

关于java - 如何使用 Hibernate 只更新所有实体属性的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39915906/

相关文章:

java - Spark : Creating Object RDD from List<Object> RDD

java - OneToOne 双双向关联

java - 没有可用的 Android 项目

c++ - WiFiNINA 获取 JSON 数据时出现问题

java - 异构 JSON 数组无法用 jackson 解析

java - 我需要在 Hibernate 中手动创建关系表吗?

sql - 表中数据的归档策略和限制

java - 布基特。聊天中支持颜色 (&) ?和用户名 onplayerjoin 不起作用?

json - 在配置单元中配置对象时出错

java - Hibernate 计算属性和 SQL 查询