0

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

Person并且Dog是实体。persondog是方法参数。

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

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

    person.addDog(dog);
    entityMananger.merge(person);

人和狗具有多对多的关系。我认为问题在于 dog 的插入语句没有首先执行。

ORA-02291 parent key not found

这是来自使用容器管理事务的 EJB 3.1 bean。

4

1 回答 1

1

我认为这不是你的真实代码,因为它会得到一个空指针异常,因为 dog 是空的。

为什么要合并这个人?人从哪里来。如果您从同一个 EntityManager 中获得该人,则无需调用合并。你可能会以某种方式得到两条狗的副本。

它应该首先插入狗,最后插入连接表。您使用的是哪个 JPA 提供程序?

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

于 2013-08-27T13:14:14.660 回答