Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 特内奥非遏制方案级联策略_Java_Hibernate_Teneo - Fatal编程技术网

Java 特内奥非遏制方案级联策略

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

我正在使用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 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论坛上回答了我的问题