如何保存对@OneToOne关系的更改

时间:2013-08-28 21:14:57

标签: 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;

}

当我持久化或合并Task实体时,Transaction实体不会更新对它的更改。

有人告诉我使用它:(cascade = CascadeType.ALL)但它没有用。

那么,如何通过一次持久/合并调用来保存对两个实体的更改?

我以这种方式更新数据库:

if (getEntityManager().isOpen()) {
            getTransaction().begin();
            entity = em.merge(entity);
            getTransaction().commit();
        }

“实体”是我正在讨论的任务实体,它正确更新但不更新关系。

1 个答案:

答案 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,它会自动为您更新所有内容。