繁体   English   中英

使用 hibernate 在不同的应用程序上更新同一个表

[英]Updating the same table on the different applications using hibernate

我有 2 个应用程序节点,它们都更新同一个数据库表。 但是,更新的列是不同的。 在这里出现问题,然后运行应用程序更新整行而不是单列。 让我们深入研究问题解释。

表名是“student”,它有 3 列。 假设 ID,column1,column2

行的初始 state 为 ID=1, column1="abc", column2="xyz"有问题的场景步骤如下

  • App-instance-1:读取行并将其保存在持久性 state 中。
  • App-instance-2:读取行并将其保存在持久性 state 中。
  • App-instance-1:将 pojo 属性 column1 更新为“ABC”( column1="ABC" , column2="xyz")。
  • App-instance-2:将 pojo 属性 column2 更新为“XYZ”(column1="abc", column2="XYZ" )。
  • app-instance-1:将pojo合并到db表中,行看起来像ID=1,column1="ABC",column2="xyz"
  • app-instance-2:将pojo合并到db表中,行看起来像ID=1,column1="abc",column2="XYZ"

最后,应用实例覆盖彼此的列。 我想将最后一行视为column1="ABC", column2="XYZ" 但是,它是column1="abc", column2="XYZ"

我的问题是,为什么 App-instance-1 会更新 column2,即使 column2 没有更改。 column2 在 instance-1 上不脏。 我该如何克服这个问题?

@Entity
@Table("student")
public class Student {
    private Long ID;
    private String column1;
    private String column2;
    
    // Assuming other definations are ok.
}

提前致谢。

据我所知,您可以尝试以下两种方法之一:

  • 使用乐观锁定(例如 Hibernate 提供的@Version
  • 创建自定义查询以仅更新一个字段,而不是更新整个实体。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM