use*_*383 2 java jpa spring-data-jpa jpa-2.1
在我正在开发的应用程序中,我有数据结构:
Bucket [1] ------ [Many] Element
Run Code Online (Sandbox Code Playgroud)
现在我可以查看何时可以添加删除和修改元素.现在我有多个用户正在编辑相同的存储桶的情况,他们可以搞砸其他编辑.我想通过每次保存数据时检查和更新存储桶版本来解决此问题.
JPA有自己的版本,所以我打算重用它.但是当JPA元素更新时,JPA心甘情愿地不会更新Bucket版本.有没有一种好的方法如何在JPA中对实体实施版本更新?
目前我发现了一些建议,比如创建虚拟字段,拥有自己的版本字段,或者分离和合并实体.他们似乎没有对我好,有什么更好的吗?
如果有帮助,我正在使用带有弹簧数据的eclipse链接.
您可以使用OPTIMISTIC_FORCE_INCREMENT锁定Bucket在关系更改时强制更新实体(即添加和删除一对多集合对象中的元素).如果在不知道关系更新的情况下进行更改,这将导致任何其他持久性上下文中的任何更新失败.
例:
public void addElement(int bucketId, Element element) {
Bucket bucket = em.find(Bucket.class, bucketId);
em.lock(bucket, LockModeType.OPTIMISTIC_FORCE_INCREMENT);
bucket.add(element);
element.setBucket(bucket);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
78 次 |
| 最近记录: |