Hibernate自动版本控制

时间:2011-10-03 05:23:11

标签: java hibernate jpa

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

  1. User 1加载customer1个详细信息。
  2. User 2加载customer1个详细信息。
  3. User 1更改并保存customer1的{​​{1}}。
  4. name仅更改并保存User 2的年龄。
  5. 在上面的场景中,最后数据库保存customer1的旧名称和新的年龄,因为customer1会覆盖User 2的更新。我正在使用Hibernate。我听说Hibernate自动版本控制支持这一点。如果有人知道如何处理这个,请告诉我。

2 个答案:

答案 0 :(得分:13)

您只需要添加一个用@Version注释的字段:

public class Customer {

 @Id
 private Long id;

 @Version
 private Long version;

 // rest of the fields, etc.

}

阅读this文章了解详情。

答案 1 :(得分:0)

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