这是我的EclipseLink JPA实体的一部分:
public class Task implements Serializable {
@JoinColumn(name = "IdTransaction", referencedColumnName = "serial_no")
@OneToOne(cascade = CascadeType.ALL)
private Transaction idTransaction;
}
当我持久化或合并Task实体时,Transaction实体不会更新对它的更改。
有人告诉我使用它:(cascade = CascadeType.ALL)
但它没有用。
那么,如何通过一次持久/合并调用来保存对两个实体的更改?
我以这种方式更新数据库:
if (getEntityManager().isOpen()) {
getTransaction().begin();
entity = em.merge(entity);
getTransaction().commit();
}
“实体”是我正在讨论的任务实体,它正确更新但不更新关系。
答案 0 :(得分:0)
我找到了解决方案,这些是可用的Cascades:
CascadeType.MERGE
CascadeType.PERSIST
CascadeType.DETACH
CascadeType.REMOVE
CascadeType.REFRESH
CascadeType.ALL
如果您的实体“USA”包含“States”Entites列表,并且您对某些州进行了更改,则只需添加:
@OneToMany(cascade = CascadeType.MERGE)
private State stateID;
然后只是合并美国实体而不是每个改变状态。使用CascadeType.MERGE
,它会自动为您更新所有内容。