Hibernate自动版本控制

8
我开发了一个客户维护应用程序。用户可以通过网页界面更改客户详细信息。我想处理以下情况:
1. User 1 加载 customer1 详细信息。 2. User 2 加载 customer1 详细信息。 3. User 1 更改并保存 customer1name。 4. User 2 只更改并保存 customer1 的年龄。
在上述情况下,最后数据库保存了 customer1 的旧名称和新的年龄,因为 User 2 覆盖了 User 1 的更新。我正在使用 Hibernate 。我听说 Hibernate 自动版本控制支持此功能。如果有人知道如何处理,请给我建议。
2个回答

13

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

public class Customer {

 @Id
 private Long id;

 @Version
 private Long version;

 // rest of the fields, etc.

}

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


我在我的Java项目中使用SpringJDBC而不是任何ORM。但我需要添加一些Hibernate的@Version功能,以避免像那里描述的一些情况。所以也许你可以建议我JDBC实现? - MeetJoeBlack
这种方法的通用术语被称为“乐观锁定”。您可以在此处找到一些指导:https://dev59.com/qGoy5IYBdhLWcg3wN7i8#8880896 - Behrang

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接