Java 使用“更新JPA中的@ManyToMany错误”;“未找到父项”;

Java 使用“更新JPA中的@ManyToMany错误”;“未找到父项”;,java,jakarta-ee,jpa,many-to-many,Java,Jakarta Ee,Jpa,Many To Many,我有一个存储库方法,它可以执行以下操作: 人和狗是实体人和狗是方法参数 Dog dog = entityManager.find(Dog.class, dogId); if (dog== null) { // creates dog dog = entityManager.persist(dog); } person.addDog(dog); entityMananger.merge(person); 人和狗有多对多的

我有一个存储库方法,它可以执行以下操作:

是实体<代码>人和狗是方法参数

    Dog dog = entityManager.find(Dog.class, dogId);

    if (dog== null) {
        // creates dog
        dog = entityManager.persist(dog);
    }

    person.addDog(dog);
    entityMananger.merge(person);
人和狗有多对多的关系。我认为问题在于没有首先执行dog的insert语句

ORA-02291 parent key not found

这是来自EJB3.1bean,使用容器管理的事务。

我假设这不是您真正的代码,因为当dog为null时,它会得到null指针异常

你为什么要合并这个人?这个人来自哪里。如果此人来自同一个EntityManager,则无需调用merge。你可能会得到这条狗的两个副本

它应该首先插入dog,最后插入join表。您使用的是什么JPA提供商


请包含完整的异常和SQL日志。

您能显示生成的查询吗?是的,它不是真实的代码。
person
dog
都是存储库方法中的参数。它们是从客户端调用的。Hibernate是持久性提供者。