同一实体的多个表示正在合并、分离

Aka*_*ash 3 jpa jpa-2.0

我在尝试使用 jpa2.0 将包含持久实体和分离实体(新创建的实体)的实体列表更新到我的数据库中时遇到错误。我的实体包含在合并数据时出现错误(在标题中提到)的内部实体:

Class superclass{
    private A a;
    private string name;

    //getter setters here...
}

Class A{
    private long id;
    @onetoone(cascade=CascadeType.All, fetch=FetchType.Eager)
     private B b;
    @onetoone(cascade=CascadeType.All, fetch=FetchType.Eager)
    private C c;

    //getter setters here...

}


Class Dao{

    daoInsert(superclass x){

    em.merge(x);

       }
}
Run Code Online (Sandbox Code Playgroud)

我希望发送的任何实体都可以合并到数据库中。

Hibernate 通过将以下内容添加到persistence.xml 确实为此提供了解决方案

我可以在 jpa 中做一些与 hibernate.js 相同的事情吗?

请不要建议使用 em.find() 查找实体然后手动更新,因为我也需要实体、持久化实体和新创建的实体。此外,我正在使用弹簧形式将整个专利实体保存到数据库中。

如果我不够清楚,我很抱歉,这是我的第一个问题,我真的是初学者。

任何帮助将不胜感激。

Aka*_*ash 7

今天自己找到了这个问题的答案。你只需要

从不允许您保留分离实体的实体中删除 CascadeType.MERGE。

如果您使用的是 CascadeType.ALL,那么请提及除 CascadeType.MERGE 之外的所有级联类型。