Hibernate 自动版本控制
Posted
技术标签:
【中文标题】Hibernate 自动版本控制【英文标题】:Hibernate Automatic Versioning 【发布时间】:2011-10-03 05:23:10 【问题描述】:我开发了一个客户维护应用程序。用户可以通过 Web 界面更改客户详细信息。我想处理以下场景:
User 1
加载 customer1
详细信息。
User 2
加载 customer1
详细信息。
User 1
更改并保存customer1
的name
。
User 2
只会更改和保存 customer1
的年龄。
在上面的场景中,由于User 2
覆盖了User 1
的更新,最终数据库保存了customer1
的旧名称和新时代。我正在使用休眠。我听说 Hibernate Automatic Versioning 支持这一点。如果有人知道如何处理,请告诉我。
【问题讨论】:
【参考方案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? 这种方法的通用术语称为乐观锁定。你可以在这里找到一些指导:***.com/a/8880896/309683【参考方案2】:一种解决方案,当第二个请求倾向于更新详细信息时,首先检查是否在加载详细信息后更新,如果是则引发异常并允许用户在再次加载详细信息后进行更改,您可以使用修改时间戳来比较
【讨论】:
以上是关于Hibernate 自动版本控制的主要内容,如果未能解决你的问题,请参考以下文章
无法提交断点LineBreakpoint hibernate4CURD : -1, 原因是: 找不到 URL 'file:/E:/版本控制/Design-java/hibernate4CURD