sql >> Base de Datos >  >> RDS >> Mysql

La relación JPA OneToMany/ManyToOne no funciona. ¿Qué me estoy perdiendo?

Lo principal que querrá tener en cuenta es definir el lado propietario de la relación correctamente. Por lo que recuerdo, mi conclusión de la documentación oficial (a veces difícil de entender) fue que el lado propietario es prácticamente el que desencadenará cascadas y eliminaciones transparentes de manera predeterminada.

Por ejemplo, en lo anterior, ha definido el lado propietario como ProjectEntity , por lo que el paso más importante para que funcione la persistencia en cascada es agregar el proyecto a PersonEntity.projects .

Luego querrá llamar a persist en el lado propietario de la relación, es decir,

em.persist(projectTest);

Si esto no ayuda, le sugiero que habilite el inicio de sesión de SQL en su proveedor de JPA para averiguar qué declaraciones está tratando de ejecutar y, especialmente, en qué orden se están insert estas entidades. ed.

También intente, según los comentarios existentes, persistir a la persona primero. Si hace esto, creo que la forma correcta es agregar el persistente entidad a la relación, es decir:

PersonEntity persistedPerson = em.persist(personTest);
projectTest.setPersonId(persistedPerson);
em.persist(projectTest);