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);