【问题标题】:Hibernate Automatic VersioningHibernate 自动版本控制
【发布时间】:2011-10-03 05:23:10
【问题描述】:

我开发了一个客户维护应用程序。用户可以通过 Web 界面更改客户详细信息。我想处理以下场景:

  1. User 1 加载 customer1 详细信息。
  2. User 2 加载 customer1 详细信息。
  3. User 1 更改并保存customer1 的name。
  4. User 2 只会更改和保存 customer1 的年龄。

在上面的场景中,由于User 2 覆盖了User 1 的更新,最终数据库保存了customer1 的旧名称和新时代。我正在使用休眠。我听说 Hibernate Automatic Versioning 支持这一点。如果有人知道如何处理,请告诉我。

【问题讨论】:

    标签: java hibernate jpa


    【解决方案1】:

    你只需要添加一个带有@Version注解的字段:

    public class Customer {
    
     @Id
     private Long id;
    
     @Version
     private Long version;
    
     // rest of the fields, etc.
    
    }
    

    阅读this 文章了解更多信息。

    【讨论】:

    • 我在 Java 项目中的任何 ORM 上都使用 SpringJDBC。但我需要添加一些 Hibernate 的 @Version 功能,以防止出现类似那里描述的情况。那么也许你可以建议我实现 JDBC?
    • 这种方法的通用术语称为乐观锁定。你可以在这里找到一些指导:stackoverflow.com/a/8880896/309683
    【解决方案2】:

    一种解决方案,当第二个请求倾向于更新详细信息时,首先检查是否在加载详细信息后更新,如果是则引发异常并允许用户在再次加载详细信息后进行更改,您可以使用修改时间戳来比较

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-23
      • 1970-01-01
      • 2016-04-14
      • 2022-07-27
      • 1970-01-01
      • 2013-09-03
      • 2019-10-11
      • 2019-08-22
      相关资源
      最近更新 更多