Hlavní věc, na kterou si budete chtít dát pozor, je definovat vlastnící stranu vztahu správně. Pokud si pamatuji, z (někdy těžko srozumitelné) oficiální dokumentace jsem si vyvodil, že vlastnická strana je v podstatě ta, která ve výchozím nastavení spustí kaskády a transparentní mazání.
Například ve výše uvedeném jste definovali vlastnickou stranu jako ProjectEntity
, takže nejdůležitějším krokem pro fungování kaskádové persistence je přidání projektu do PersonEntity.projects
.
Poté budete chtít zavolat persist
na vlastnické straně vztahu, tj.
em.persist(projectTest);
Pokud to nepomůže, navrhoval bych, abyste u svého poskytovatele JPA povolili protokolování SQL, abyste zjistili, jaké příkazy se pokouší provést, a zejména v jakém pořadí jsou tyto entity insert
vyd.
Zkuste také, podle existujících komentářů, nejprve přetrvat osobu. Pokud to uděláte, věřím, že správným způsobem je přidat přetrvávající entity ke vztahu, tj.:
PersonEntity persistedPerson = em.persist(personTest);
projectTest.setPersonId(persistedPerson);
em.persist(projectTest);