0

这是我的 EclipseLink JPA 实体的一部分:

public class Task implements Serializable { 
@JoinColumn(name = "IdTransaction", referencedColumnName = "serial_no")
@OneToOne(cascade = CascadeType.ALL)
private Transaction idTransaction;

}

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

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

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

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

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

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

4

1 回答 1

0

我找到了解决方案,这些是可用的级联:

CascadeType.MERGE
CascadeType.PERSIST
CascadeType.DETACH
CascadeType.REMOVE
CascadeType.REFRESH
CascadeType.ALL

如果您有一个带有“州”实体列表的实体“美国”,并且您对某些州进行了更改,则只需添加:

@OneToMany(cascade = CascadeType.MERGE)
private State stateID;

然后只是合并美国实体而不是每个更改的状态。使用CascadeType.MERGE,它应该会自动为您更新所有内容。

于 2013-08-29T12:27:16.687 回答