Saya mengalami masalah menghapus node yatim menggunakan JPA dengan pemetaan berikut
@OneToMany (cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "owner")
private List<Bikes> bikes;
Saya mengalami masalah peran yatim di sekitar basis data.
Saya dapat menggunakan org.hibernate.annotations.Cascade
tag spesifik Hibernate anotasi tapi jelas saya tidak ingin mengikat solusi saya ke dalam implementasi Hibernate.
EDIT : Sepertinya JPA 2.0 akan menyertakan dukungan untuk ini.
Jika Anda menggunakan JPA 2.0, sekarang Anda dapat menggunakan
orphanRemoval=true
atribut@xxxToMany
anotasi untuk menghapus anak yatim.Sebenarnya,
CascadeType.DELETE_ORPHAN
sudah usang di 3.5.2-Final.sumber
sumber
cascade = CascadeType.ALL, orphanRemoval = false
dan menghapus induknya? Apakah ini akan menghapus anak-anak, meskipun saya sudah secara khusus menyuruh TIDAK melakukannya?Jika Anda menggunakan JPA dengan EclipseLink, Anda harus mengatur anotasi @PrivateOwned .
Dokumentasi: Eclipse Wiki - Menggunakan EclipseLink JPA Extensions - Bab 1.4 Cara Menggunakan Anotasi @PrivateOwned
sumber
Anda dapat menggunakan @PrivateOwned untuk menghapus anak yatim misalnya
sumber
Saya hanya menemukan solusi ini tetapi dalam kasus saya itu tidak berhasil:
orphanRemoval = true tidak berpengaruh.
sumber
Menurut Java Persistence with Hibernate , cascade orphan delete tidak tersedia sebagai anotasi JPA.
Itu juga tidak didukung dalam JPA XML.
sumber
Saya memiliki masalah yang sama dan saya bertanya-tanya mengapa kondisi di bawah ini tidak menghapus anak yatim. Daftar hidangan tidak dihapus di Hibernate (5.0.3.Final) ketika saya menjalankan permintaan penghapusan bernama:
Lalu saya ingat bahwa saya tidak boleh menggunakan query delete bernama , tetapi EntityManager. Saat saya menggunakan
EntityManager.find(...)
metode untuk mengambil entitas dan kemudianEntityManager.remove(...)
menghapusnya, piring juga dihapus.sumber
Adil
@OneToMany(cascade = CascadeType.ALL, mappedBy = "xxx", fetch = FetchType.LAZY, orphanRemoval = true)
.Hapus targetEntity = MyClass.class , ini berfungsi dengan baik.
sumber
Sebagai catatan, di OpenJPA sebelum JPA2 itu adalah @ElementDependant.
sumber
Saya menggunakan pemetaan satu ke satu, tetapi anak tidak dihapus JPA memberikan pelanggaran kunci asing
Setelah menggunakan orphanRemoval = true, masalah terselesaikan
sumber