Hal utama yang ingin Anda perhatikan adalah menentukan sisi pemilik dari relasi dengan benar. Sejauh yang saya ingat, kesimpulan saya dari dokumentasi resmi (terkadang sulit dipahami) adalah bahwa pihak pemilik adalah pihak yang secara default akan memicu kaskade dan penghapusan transparan.
Misalnya, di atas, Anda telah mendefinisikan sisi pemilik sebagai ProjectEntity
, jadi langkah terpenting agar persistensi bertingkat berfungsi adalah menambahkan proyek ke PersonEntity.projects
.
Anda kemudian ingin memanggil persist
di sisi pemilik relasi, yaitu
em.persist(projectTest);
Jika ini tidak membantu, saya sarankan Anda mengaktifkan SQL logging di penyedia JPA Anda untuk mengetahui pernyataan apa yang coba dijalankannya, dan terutama dalam urutan apa entitas ini insert
ed.
Coba juga, sesuai komentar yang ada, untuk mempertahankan orang terlebih dahulu. Jika Anda melakukan ini, saya yakin cara yang benar adalah menambahkan bertahan entitas ke hubungan, yaitu:
PersonEntity persistedPerson = em.persist(personTest);
projectTest.setPersonId(persistedPerson);
em.persist(projectTest);