gpt4 book ai didi

java - JPA - 在设置值和保留之前刷新分离的实体

转载 作者:太空宇宙 更新时间:2023-11-04 06:48:27 24 4
gpt4 key购买 nike

我有一个分离的实体并想要设置一些值。但在此之前,我想刷新实体以确保拥有数据库中的最新数据。我想出了这段代码。在设置一些新值之前,它会合并并刷新我的实体。

问题是,这创建了一个新对象。有没有更好、更简单的方法来实现这一目标?

@Entity
public class MyEntity{


public void setValueAndPersist(){

EntityManager em = ...

em.getTransaction().begin();

MyEntity newEntity = em.merge(this);

em.refresh(newEntity);

newEntity.setSomeVal("someVal");

em.commit();
}
}

最佳答案

使用自己的类与数据库交互。不要在实体本身中这样做!

解决方案1:您可以对当前对象使用@Versionhttps://weblogs.java.net/blog/2009/07/30/jpa-20-concurrency-and-locking 。当它不是最新版本并且您尝试合并它时,您会收到异常。

解决方案2:您可以使用 find(...) http://docs.oracle.com/javaee/6/api/javax/persistence/EntityManager.html#find%28java.lang.Class,%20java.lang.Object%29

使用当前项的类和 ID 从数据库(或持久性上下文,如果已存在)加载实际状态。

关于java - JPA - 在设置值和保留之前刷新分离的实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23663652/

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