Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

O relacionamento JPA OneToMany/ManyToOne não está funcionando - O que estou perdendo?


A principal coisa que você deve observar é definir o lado proprietário da relação corretamente. Até onde me lembro, minha conclusão da documentação oficial (às vezes difícil de entender) foi que o lado proprietário é praticamente aquele que, por padrão, acionará cascatas e exclusões transparentes.

Por exemplo, no exemplo acima, você definiu o lado proprietário como ProjectEntity , portanto, a etapa mais importante para que a persistência em cascata funcione é adicionar o projeto a PersonEntity.projects .

Você então vai querer chamar persist do lado proprietário da relação, ou seja,
em.persist(projectTest);

Se isso não ajudar, sugiro que você habilite o log SQL em seu provedor JPA para descobrir quais instruções ele está tentando executar e, especialmente, em que ordem essas entidades estão sendo insert ed.

Tente também, de acordo com os comentários existentes, persistir a pessoa primeiro. Se você fizer isso, acredito que a maneira correta seja adicionar o persistente entidade ao relacionamento, ou seja:
PersonEntity persistedPerson = em.persist(personTest);
projectTest.setPersonId(persistedPerson);
em.persist(projectTest);