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