2011-10-03 81 views
7

我开发了一个客户维护应用程序。用户可以通过网页界面改变客户的详细信息。我想处理以下情况:休眠自动版本

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

在上述情况下,终于数据库保存customer1的旧名称和新的时代,因为User 2覆盖User 1的更新。我正在使用Hibernate。我听说Hibernate自动版本控制支持这一点。如果有人知道如何处理这个问题,请告诉我。

回答

12

你只需要添加与@Version注释字段:

public class Customer { 

@Id 
private Long id; 

@Version 
private Long version; 

// rest of the fields, etc. 

} 

阅读this文章以获取更多信息。

+0

我在我的Java项目的任何ORM中使用SpringJDBC。但是我需要添加一些Hibernate的@Version功能,以防止在那里描述一些情况。所以,也许你可以建议我JDBC的实现? – MeetJoeBlack

+0

这种方法的总称称为_optimistic locking_。你可以在这里找到一些指导:http://stackoverflow.com/a/8880896/309683 – Behrang

0

一个解决方案,当第二个请求趋于更新细节首先检查是否是细节后更新加载,如果这样的话引发异常,并允许用户重新加载细节后更改,您可以使用修改的时间戳比较