gpt4 book ai didi

java - 如何对实体实现版本更新?

转载 作者:行者123 更新时间:2023-11-30 06:11:57 25 4
gpt4 key购买 nike

在我目前正在开发的应用程序中,我有数据结构:

                  Bucket [1] ------ [Many] Element

现在我可以查看何时可以添加删除和修改元素。现在我遇到多个用户正在编辑同一个存储桶的情况,他们可能会搞砸其他人的编辑。我想通过每次保存数据时检查和更新存储桶版本来解决这个问题。

JPA 有自己的版本,所以我打算重用它。但是 JPA 在其元素更新时自愿不更新 Bucket 版本。有没有什么好方法可以在 JPA 中强制对实体进行版本更新?

目前我发现了一些建议,比如创建虚拟字段、拥有自己的版本字段,或者分离和合并实体。我觉得它们都不对,有什么更好的吗?

如果有帮助,我正在将 eclipse 链接与 spring 数据一起使用。

最佳答案

您可以使用 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);
}

关于java - 如何对实体实现版本更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33419350/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com