मान लीजिए कि मेरी दो इकाइयाँ हैं: समूह और उपयोगकर्ता। हर उपयोगकर्ता कई समूहों का सदस्य हो सकता है और हर समूह में कई उपयोगकर्ता हो सकते हैं।
@Entity
public class User {
@ManyToMany
Set<Group> groups;
//...
}
@Entity
public class Group {
@ManyToMany(mappedBy="groups")
Set<User> users;
//...
}
अब मैं एक समूह को हटाना चाहता हूं (मान लें कि इसके कई सदस्य हैं)।
समस्या यह है कि जब मैं कुछ ग्रुप पर EntityManager.remove () कॉल करता हूं, तो JPA प्रदाता (मेरे मामले में हाइबरनेट) पंक्तियों को ज्वाइन टेबल से नहीं हटाता है और विदेशी मुख्य बाधाओं के कारण ऑपरेशन विफल हो जाता है। उपयोगकर्ता को हटाने का आह्वान () ठीक काम करता है (मुझे लगता है कि इसका संबंध संबंधों के साथ कुछ करना है)।
तो मैं इस मामले में एक समूह को कैसे हटा सकता हूं?
जिस तरह से मैं साथ आ सकता था, वह है समूह के सभी उपयोगकर्ताओं को लोड करना, फिर प्रत्येक उपयोगकर्ता अपने समूहों से वर्तमान समूह को हटा दें और उपयोगकर्ता को अपडेट करें। लेकिन समूह से हर उपयोगकर्ता पर अपडेट () कॉल करने के लिए इस समूह को हटाने में सक्षम होना मेरे लिए हास्यास्पद लगता है।