Java 特内奥非遏制方案级联策略
我正在使用Teneo/EMF/Hibernate,我做了一个简单的测试Java 特内奥非遏制方案级联策略,java,hibernate,teneo,Java,Hibernate,Teneo,我正在使用Teneo/EMF/Hibernate,我做了一个简单的测试 我创建了两个对象A和B。A与B(B1)有一对多的非包容关系 这是我的测试代码: // LOAD A Session session = this.hbds.getSessionFactory().openSession(); Transaction transaction = session.beginTransaction(); A loadedA = (A)session.createQuery("FROM A a L
- 我创建了两个对象A和B。A与B(B1)有一对多的非包容关系
- 这是我的测试代码:
// LOAD A Session session = this.hbds.getSessionFactory().openSession(); Transaction transaction = session.beginTransaction(); A loadedA = (A)session.createQuery("FROM A a LEFT JOIN FETCH a.b1").list().get(0); transaction.commit(); session.flush(); session.close(); // LOAD B session = this.hbds.getSessionFactory().openSession(); transaction = session.beginTransaction(); B loadedB = (B)session.get("B", (Long)6L); transaction.commit(); session.flush(); session.close(); // ADD B TO A session = this.hbds.getSessionFactory().openSession(); transaction = session.beginTransaction(); loadedA.getB1().add(loadedB); //loadedA.getB1().add(b); session.saveOrUpdate(loadedA); transaction.commit(); session.flush(); session.close(); this.hbds.close();
- 以下是我对Teneo中非包含的CASCADE_POLICY_选项的不同配置,以及我得到的相应错误消息:
- 刷新、合并、持久化:org.hibernate.unUniqueObjectException:具有相同标识符值的不同对象已与会话关联:[B#6]
- 刷新,合并:有效,但如果我创建了一个不在数据库中的新对象“b”,并尝试将其添加到a,则会出现以下错误:org.hibernate.transientObject异常:对象引用未保存的临时实例-在刷新之前保存临时实例:b
您知道使用saveOrUpdate和避免这些错误的正确配置是什么吗?或者有什么解决方案可以避免这个问题?Martin Taal在Eclipse论坛上回答了我的问题