Java 如何保存对@OneToOne关系的更改
这是我的EclipseLink JPA实体的一部分:Java 如何保存对@OneToOne关系的更改,java,jpa,eclipselink,one-to-one,Java,Jpa,Eclipselink,One To One,这是我的EclipseLink JPA实体的一部分: public class Task implements Serializable { @JoinColumn(name = "IdTransaction", referencedColumnName = "serial_no") @OneToOne(cascade = CascadeType.ALL) private Transaction idTransaction; } 当我持久化或合并任务实体时,事务实体不会更新对它的更改 有人
public class Task implements Serializable {
@JoinColumn(name = "IdTransaction", referencedColumnName = "serial_no")
@OneToOne(cascade = CascadeType.ALL)
private Transaction idTransaction;
}
当我持久化或合并任务实体时,事务实体不会更新对它的更改
有人告诉我使用这个:(cascade=CascadeType.ALL)
,但它不起作用
那么,如何通过一个persist/merge调用保存对两个实体的更改呢
我通过以下方式更新数据库:
if (getEntityManager().isOpen()) {
getTransaction().begin();
entity = em.merge(entity);
getTransaction().commit();
}
“实体”是我所说的任务实体,它可以正确更新,但不能更新关系。我找到了解决方案,以下是可用的级联:
CascadeType.MERGE
CascadeType.PERSIST
CascadeType.DETACH
CascadeType.REMOVE
CascadeType.REFRESH
CascadeType.ALL
如果您有一个实体“USA”,其中包含“州”实体列表,并且您对某些州进行了更改,则只需添加:
@OneToMany(cascade = CascadeType.MERGE)
private State stateID;
然后合并美国实体,而不是每个州。使用
CascadeType.MERGE
,它会自动为您更新所有内容。您能显示修改任务
和事务
实例的代码吗?是的,我现在编辑了这个问题。您能在创建对象的地方显示任务类和服务吗?哦,我已经发布了解决方案。不过还是谢谢你的评论:D