2013-03-19 3 views
10

आप किसी अन्य तालिका में किसी कॉलम से वर्तमान ऑब्जेक्ट में एक मान को कैसे मैप करते हैं?जेपीए एनोटेशन - वर्तमान ऑब्जेक्ट की तुलना में किसी भिन्न तालिका से एकल मान कैसे प्राप्त करें?

उदाहरण:

class Foo { 
    @Id 
    @Column(name="FOO_ID") 
    private String fooId; 

    @Column(name="FOO_A") 
    private String fooA; 

    //Column to map to another table? 
    //is a one to one mapping - but don't want a separate object for this. 
    private String barCode; 
} 

तालिका: Fields

फू: FOO_ID, FOO_A

बार: FOO_ID, BAR_CODE

मैं एक अलग वस्तु बनाने के बिना BAR_CODE क्षेत्र कैसे पुनः प्राप्त करते हैं (या एक माध्यमिक तालिका) JPA annotations का उपयोग कर?

+0

ध्यान दें कि यह केवल पुनः प्राप्ति के लिए है। – Marcus

+0

आप एक अलग वस्तु क्यों नहीं चाहते हैं? – user489041

+0

इसकी एक बड़ी वेब सेवा है, और मैं ऑब्जेक्ट सृजन को कम करने की कोशिश कर रहा हूं और जब मुझे केवल एक फ़ील्ड की आवश्यकता होती है तो अतिरिक्त डेटा वापस आ रहा है। – Marcus

उत्तर

18

secondary table का उपयोग करें। यह आपको एक इकाई के लिए एक-एक-एक आधार पर, किसी अन्य तालिका के लिए मानचित्र करने और कॉलम मैपिंग को परिभाषित करने की अनुमति देता है जो इसका उपयोग करता है।

उदाहरण:

@Entity 
@Table(name = "foo") 
@SecondaryTable(name = "other_table", [email protected](name="id", referencedColumnName="FOO_ID")) 
public class Foo { 
    @Id 
    @Column(name="FOO_ID") 
    private String fooId; 

    @Column(name="FOO_A") 
    private String fooA; 

    @Column(table="OtherTable", name="barCode") 
    private String barCode; 
} 
+1

और यदि कई माध्यमिक टेबल हैं? मेरे मामले में, ऑब्जेक्ट एक मुख्य वस्तु है जिसमें कई अन्य तालिकाओं का संदर्भ दिया गया है। कुछ मामलों में, ऑब्जेक्ट सृजन आवश्यक है, दूसरों में, @ElementCollection काम करता है। लेकिन अगर मैं एक कॉलम के लिए एक और समाधान था (जैसे कोड/विवरण तालिका के लिए विवरण फ़ील्ड को पुनर्प्राप्त करना) तो मैं उत्सुक था। – Marcus

+3

यदि आपके पास एकाधिक माध्यमिक सारणी हैं तो ... ['@ माध्यमिकटेबल्स'] का उपयोग करें (http://docs.oracle.com/javaee/6/api/javax/persistence/SecondaryTables.html) – Perception

+2

@ धारणा: नहीं होना चाहिए यह '@ कॉलम (तालिका =" अन्य_टेबल ", नाम =" बारकोड ")'? क्या आप [इस] (http://stackoverflow.com/a/19454829/1654265) का शोषण कर रहे हैं, क्या यह एक टाइपो है, या क्या कहीं और कुछ अन्य नाम रूपांतरण है? –

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