2011-09-23 6 views
11

मैं एक इकाई वर्ग है, जहां Person इकाई है अंदर के रूप मेंएक इकाई वर्ग में <स्ट्रिंग, व्यक्ति> मानचित्र कैसे जोड़ें?

Map<String, Person> personMap; 

एक मानचित्रण जोड़ना चाहते हैं। Map से संबंधित सटीक Person की पहचान करना है (इसे उस व्यक्ति का उपनाम होना चाहिए)। एक ही व्यक्ति के अलग-अलग नाम हो सकते हैं और जब भी किसी भी नाम दिया जाता है, वही Person पाया जाना चाहिए।

पर्सिस्टेंस एपीआई जेपीए है और प्रदाता एक्लिप्ससेंक है। मुझे किस एनोटेशन का उपयोग करना चाहिए और कैसे?

उत्तर

15

जेएसआर -317 की धारा 2.7 के अनुसार, यदि मानचित्र का मूल्य एक इकाई है (जो आपका मामला है) एक जॉइन टेबल बनाई गई है और फिर OneToMany/ManyToOne एनोटेशन का उपयोग किया जाना चाहिए।

कुंजी के लिए, यदि यह मूल प्रकार है, तो @MapKeyColumn का उपयोग कुंजी के मानचित्रण कॉलम को कस्टमाइज़ करने के लिए किया जा सकता है।

@OneToMany 
@MapKeyColumn(name="person_nickname") 
Map<String, Person> personMap; 

संपादित: तो यहाँ अपने उदाहरण पर मेरी ले है

@ElementCollection 
@CollectionTable(name="<name_of_join_table>") 
@MapKeyColumn(name="<name_of_map_key_in_table>") 
Map<String, Person> personMap; 

ऊपर तीन क्षेत्रों के साथ एक में शामिल होने तालिका उत्पन्न करता है:

कुछ परीक्षण के बाद, निम्न बहुत अच्छी तरह से काम करने के लिए लगता है : मैपिंग धारक आईडी के लिए एक, कुंजी के लिए एक और मूल्य के लिए एक।

+0

बहुत अच्छा काम करता है, लेकिन मैप में मैप किए गए आइटम पढ़ने पर ऑटो फ़ेच मेरे लिए काम नहीं करता है। – sealskej

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