अगर मैं कॉलम को / a और PK को भी बढ़ावा देता हूं, तो (रिश्ते की पहचान करने वाला उर्फ)? जैसा कि कॉलम अब PK है, मुझे इसे @Id (...) के साथ टैग करना होगा।
के इस बढ़ाया समर्थन व्युत्पन्न पहचानकर्ता वास्तव में का हिस्सा है जेपीए 2.0 में नई सामग्री (देखें खंड 2.4.1 प्राथमिक कुंजी व्युत्पन्न पहचान के अनुरूप जेपीए 2.0 विनिर्देश में), जेपीए 1.0 की अनुमति नहीं है Idपर एक OneToOneया ManyToOne। JPA 1.0 के साथ, आपको विदेशी कुंजी कॉलम के लिए मैपिंग का उपयोग करना होगा PrimaryKeyJoinColumnऔर परिभाषित भी करना होगा Basic Id।
अब सवाल यह है कि क्या @Id + @JoinColumn सिर्फ @PrimaryKeyJoinColumn की तरह ही हैं?
आप एक समान परिणाम प्राप्त कर सकते हैं लेकिन Idऑन OneToOneया ManyToOneका उपयोग करना बहुत सरल है और जेपीए 2.0 के साथ व्युत्पन्न पहचानकर्ताओं को मैप करने का पसंदीदा तरीका है। PrimaryKeyJoinColumnअभी भी एक संयुक्त विरासत की रणनीति में इस्तेमाल किया जा सकता है । JPA 2.0 विनिर्देश से संबंधित अनुभाग के नीचे:
11.1.40 प्राइमरीकेयॉइनकॉल्यूशन एनोटेशन
PrimaryKeyJoinColumnएनोटेशन एक प्राथमिक कुंजी स्तंभ है कि एक और मेज पर शामिल होने के लिए एक विदेशी कुंजी के रूप में प्रयोग किया जाता है निर्दिष्ट करता है।
PrimaryKeyJoinColumnटिप्पणी में एक इकाई उपवर्ग के प्राथमिक तालिका में शामिल होने के लिए किया जाता है JOINED
इसकी सुपर क्लास के प्राथमिक तालिका में मानचित्रण रणनीति; इसका उपयोग SecondaryTableएनोटेशन के भीतर एक प्राथमिक तालिका में एक प्राथमिक तालिका में शामिल होने के लिए किया जाता है
; और इसका उपयोग OneToOne
मैपिंग में किया जा सकता है जिसमें संदर्भित इकाई की प्राथमिक कुंजी को संदर्भित इकाई के लिए एक विदेशी कुंजी के रूप में उपयोग किया जाता है [108] ।
...
PrimaryKeyJoinColumn
जोइनिंग मैपिंग रणनीति में एक उपवर्ग के लिए कोई एनोटेशन निर्दिष्ट नहीं किया जाता है, तो विदेशी कुंजी कॉलम को सुपरक्लास की प्राथमिक तालिका के प्राथमिक कुंजी कॉलम के समान नाम दिए गए हैं।
...
उदाहरण: ग्राहक और ValuedCustomer उपवर्ग
@Entity
@Table(name="CUST")
@Inheritance(strategy=JOINED)
@DiscriminatorValue("CUST")
public class Customer { ... }
@Entity
@Table(name="VCUST")
@DiscriminatorValue("VCUST")
@PrimaryKeyJoinColumn(name="CUST_ID")
public class ValuedCustomer extends Customer { ... }
[१० mechanisms ] धारा २.४.१.१ में वर्णित व्युत्पन्न आईडी तंत्र को अब PrimaryKeyJoinColumnवनटॉन मैपिंग मामले के लिए प्राथमिकता दी जाएगी
।
यह सभी देखें
यह स्रोत http://weblogs.java.net/blog/felipegaucho/archive/2009/10/24/jpa-join-table-additional-state बताता है कि @ManyToOne और @Id का उपयोग करके JPA 1.x. अब कौन सही है?
लेखक JPA 1.0 (!) के बारे में एक लेख लिखने के लिए EclipseLink के पूर्व रिलीज़ JPA 2.0 अनुरूप संस्करण ( लेख के समय संस्करण 2.0.0-M7 ) का उपयोग कर रहा है! यह लेख भ्रामक है, लेखक कुछ का उपयोग कर रहा है जो जेपीए 1.0 का हिस्सा नहीं है ।
रिकॉर्ड के लिए, के समर्थन Idपर OneToOneऔर ManyToOneEclipseLink 1.1 में जोड़ दिया गया है (देखें इस संदेश से जेम्स सदरलैंड , EclipseLink comitter और का मुख्य योगदान जावा हठ विकी पुस्तक)। लेकिन मुझे जिद करने दें, यह JPA 1.0 का हिस्सा नहीं है ।