Mysql
 sql >> Database >  >> RDS >> Mysql

La relazione JPA OneToMany/ManyToOne non funziona - Cosa mi sto perdendo?

La cosa principale a cui vorrai fare attenzione è definire il lato proprietario della relazione correttamente. Per quanto mi ricordo, il mio punto di partenza dalla documentazione ufficiale (a volte difficile da capire) era che il lato proprietario è praticamente quello che per impostazione predefinita attiverà cascate ed eliminazioni trasparenti.

Ad esempio, in quanto sopra, hai definito il lato proprietario come ProjectEntity , quindi il passaggio più importante per il funzionamento della persistenza in cascata è aggiungere il progetto a PersonEntity.projects .

Dovrai quindi chiamare persist dalla parte proprietaria della relazione, cioè

em.persist(projectTest);

Se ciò non aiuta, ti suggerisco di abilitare l'accesso SQL al tuo provider JPA per scoprire quali istruzioni sta tentando di eseguire e soprattutto in quale ordine queste entità vengono insert ed.

Prova anche, come per i commenti esistenti, a persistere prima la persona. Se lo fai, credo che il modo corretto sia aggiungere il persistito entità alla relazione, ovvero:

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