Java JPA-在设置值和持久化之前刷新已删除的实体
我有一个已删除的实体,希望设置一些值。但在此之前,我想刷新实体,以确保拥有来自数据库的最新数据。我想出了这个密码。在设置一些新值之前,它会合并并刷新我的实体 问题是,这会创建一个新对象。有没有更好更简单的方法来归档Java JPA-在设置值和持久化之前刷新已删除的实体,java,jpa,persistence,entitymanager,Java,Jpa,Persistence,Entitymanager,我有一个已删除的实体,希望设置一些值。但在此之前,我想刷新实体,以确保拥有来自数据库的最新数据。我想出了这个密码。在设置一些新值之前,它会合并并刷新我的实体 问题是,这会创建一个新对象。有没有更好更简单的方法来归档 @Entity public class MyEntity{ public void setValueAndPersist(){ EntityManager em = ... em.getTransaction().begin();
@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: 您可以对当前对象使用
@Version
。当它不是最新版本并且您试图合并它时,会出现异常。
解决方案2: 您可以使用
find(…)
使用当前项中的类和ID从DB(或持久性上下文,如果其中已经存在)加载实际状态。如果您知道该实体存在于该DB中,则可以查找它:
MyEntity entity=em.find(MyEntity.class,这里的主键)代码>然后更新值-即-跳过合并/刷新直到现在才知道通过@Version进行乐观锁定。非常有用的答案!