Katakanlah saya memiliki dua entitas: Grup dan Pengguna. Setiap pengguna dapat menjadi anggota dari banyak grup dan setiap grup dapat memiliki banyak pengguna.
@Entity
public class User {
@ManyToMany
Set<Group> groups;
//...
}
@Entity
public class Group {
@ManyToMany(mappedBy="groups")
Set<User> users;
//...
}
Sekarang saya ingin menghapus grup (misalkan memiliki banyak anggota).
Masalahnya adalah ketika saya memanggil EntityManager.remove () di beberapa Grup, penyedia JPA (dalam kasus saya Hibernate) tidak menghapus baris dari tabel gabungan dan operasi penghapusan gagal karena kendala kunci asing. Memanggil remove () pada Pengguna berfungsi dengan baik (saya kira ini ada hubungannya dengan memiliki sisi hubungan).
Jadi bagaimana cara menghapus grup dalam kasus ini?
Satu-satunya cara yang bisa saya lakukan adalah memuat semua pengguna di grup, lalu untuk setiap pengguna, hapus grup saat ini dari grupnya dan perbarui pengguna. Tetapi tampaknya konyol bagi saya untuk memanggil update () pada setiap pengguna dari grup hanya untuk dapat menghapus grup ini.