我开发了一个客户维护应用程序。用户可以通过Web界面更改客户详细信息。我想处理以下场景:
User 1
加载customer1
个详细信息。User 2
加载customer1
个详细信息。User 1
更改并保存customer1
的{{1}}。name
仅更改并保存User 2
的年龄。在上面的场景中,最后数据库保存customer1
的旧名称和新的年龄,因为customer1
会覆盖User 2
的更新。我正在使用Hibernate。我听说Hibernate自动版本控制支持这一点。如果有人知道如何处理这个,请告诉我。
答案 0 :(得分:13)
您只需要添加一个用@Version
注释的字段:
public class Customer {
@Id
private Long id;
@Version
private Long version;
// rest of the fields, etc.
}
阅读this文章了解详情。
答案 1 :(得分:0)
一个解决方案,当第二个请求倾向于更新细节时,首先检查是否在加载细节后更新,如果是,则引发异常并允许用户在再次加载细节后更改,可以使用修改时间戳进行比较