मैं एक जनक एक ManyToOne रिश्ते में एक बाल इकाई के साथ इकाई है:जेपीए कैस्केड के साथ डुप्लिकेट से कैसे बचें?
@Entity class Parent {
// ...
@ManyToOne((cascade = {CascadeType.ALL})
private Child child;
// ...
}
बाल एक अद्वितीय क्षेत्र है:
@Entity class Child {
// ...
@Column(unique = true)
private String name;
// ...
}
जब मैं किसी नए की जरूरत है चाइल्ड, मैं चाइल्डडाओ फ़िर पूछता हूं सेंट:
Child child = childDao.findByName(name);
if(child == null) {
child = new Child(name);
}
Parent parent = new Parent();
parent.setChild(child);
समस्या यह है, अगर मैं ऊपर दो बार (बाल के लिए एक ही नाम के साथ) की तरह करते हैं, और केवल अंत में जनक जारी रहती है, मैं एक बाधा अपवाद मिलता है। जो सामान्य लगता है, क्योंकि शुरुआत में निर्दिष्ट नाम के साथ डेटाबेस में कोई बच्चा नहीं था।
समस्या यह है कि, मुझे यकीन नहीं है कि इस स्थिति से बचने का सबसे अच्छा तरीका क्या होगा।
क्या आप वाकई अपना मॉडल ठीक है? बच्चे के कई माता-पिता हो सकते हैं, और माता-पिता के पास केवल एक बच्चा हो सकता है? –
मेरा उत्तर एक वनू रिश्ते को मानता है - उपर्युक्त टिप्पणी बिल्कुल सही है, यह सही है अगर यह एक विचित्र नाम है। –
हां, मॉडल सही है। मैंने उदाहरण के लिए इकाइयों का नाम बदल दिया, और ऐसा लगता है कि मैं बेहतर कर सकता था। – Cos64