2011-10-27 14 views
6

मुझे OneToMany फ़ील्ड की दृढ़ता पर परेशानी है। ये दो सरलीकृत कक्षाएं हैं मैं परीक्षण करने के लिए उपयोग कर रहा हूं।जेपीए वन टोमनी बच्चे को जारी नहीं रखती

public class User implements Serializable { 
... 
private String name; 
... 
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL) 
private List<PhoneNumber> phoneNumbers; 
... 
} 

public class PhoneNumber implements Serializable { 
... 
private String phoneNumber; 
... 
@ManyToOne() 
private User user; 
... 
} 

तो मैं ऐसा करना चाहते हैं:

User u = new User(); 
PhoneNumber p = new PhoneNumber(); 
u.setName("Alan"); 
u.getPhoneNumbers.add(p); 

लेकिन जब मैं उपयोगकर्ता जारी रहती यू PhoneNumber बच्चे स्वचालित रूप से कायम नहीं कर रहा है। ओओ रास्ते में, मुझे केवल कई रचनाओं में से एक करने की आवश्यकता है।

मैं एक्लिप्ससेंक का उपयोग करता हूं।

आपके संकेतों के लिए सभी को बहुत धन्यवाद।

+0

यह थोडा अजीब है - ऐसा उदाहरण मेरे मामले (एक्लिप्ससेंक) में ठीक काम करता है। अंत में आप केवल EntityManager # persist (u) करते हैं? आप कैसे जानते हैं कि मान जारी नहीं है - डेटाबेस में चेक किया गया है या किसी भी तरह से क्वेरी पूछता है? क्या आपने EntityManager को फ़्लश करने का प्रयास किया था? –

उत्तर

2

आपको दोनों दिशाओं में संबंध स्थापित करने की आवश्यकता है। p.setUser(u) अपने कोड में जोड़ें:

User u = new User(); 
PhoneNumber p = new PhoneNumber(); 
u.setName("Alan"); 
u.getPhoneNumbers.add(p); 
p.setUser(u); 
+0

क्या आप वाकई फोन नंबर इकाई को बनाए रखने के लिए दोनों दिशाओं को सेट करना चाहते हैं? –

+0

@ पेड्रो यदि यह एक द्विपक्षीय संबंध है (जैसा कि प्रश्न के कोड खंड में दिखाया गया है): हां। –

+2

ऐसा इसलिए है क्योंकि फ़ोन नम्बर रिश्ते का एक उलटा पक्ष है? मैंने रिश्ते के दूसरे पक्ष को सेट किए बिना उपरोक्त बात की संरचना को सफलतापूर्वक जारी रखा है। PhoneNumeber.user शून्य पर सेट है, लेकिन यह सफलतापूर्वक जारी है। जेपीए 2.0 स्पेक 3.2.4 पर एक नज़र डालें "प्रबंधित इकाइयों के बीच बिडरेक्शनल रिश्तों को रिश्ते के स्वामित्व वाले पक्षों द्वारा आयोजित संदर्भों के आधार पर जारी रखा जाएगा। यह डेवलपर जिम्मेदारी है जो स्वामित्व वाले इन-मेमोरी संदर्भों को रखने के लिए है पक्ष और विपरीत पक्ष पर आयोजित एक दूसरे के साथ संगत होते हैं जब वे " –

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^