Основното нещо, за което ще искате да внимавате, е да дефинирате страна на собственика на връзката правилно. Доколкото си спомням, моят извод от (понякога трудната за разбиране) официална документация беше, че страната на собственик е почти тази, която по подразбиране ще задейства каскади и прозрачни изтривания.
Например в горното сте дефинирали страната-притежател като ProjectEntity
, така че най-важната стъпка за работа на каскадно постоянство е да добавите проекта към PersonEntity.projects
.
След това ще искате да извикате persist
от страна на собственика на връзката, т.е.
em.persist(projectTest);
Ако това не помогне, предлагам да активирате SQL регистриране във вашия доставчик на JPA, за да разберете какви оператори се опитва да изпълни и особено в какъв ред insert
са тези обекти изд.
Също така опитайте, според съществуващите коментари, първо да упорствате човек. Ако направите това, смятам, че правилният начин е да добавите постоянен обект на връзката, т.е.:
PersonEntity persistedPerson = em.persist(personTest);
projectTest.setPersonId(persistedPerson);
em.persist(projectTest);