मैं नेटबीन का उपयोग नहीं करता इसलिए मैं वास्तव में अपने मैपिंग टूल के बारे में कुछ भी नहीं कह सकता।
एक समग्र कुंजी मैपिंग के लिए, कुछ विकल्प हैं। आप
पी क्षेत्रों के साथ एक अलग @Embeddable
वस्तु को परिभाषित करने और अपने @Entity
कक्षा में @EmbeddedId
रूप में इसका इस्तेमाल
@Embeddable
public class MyCompositePK {
@Column
private String fieldA;
@Column
private String fieldB;
}
@Entity
public class MyBean {
@EmbeddedId
private MyCompositePK id;
@Column
private String fieldC;
}
पी क्षेत्रों के साथ एक गैर मैप किया POJO परिभाषित करें और @IdClass
के रूप में उपयोग कर सकते हैं @Entity
में।
@Entity
@IdClass(value=ClassAB.ClassABId.class)
public class ClassAB implements Serializable {
private String idA;
private String idB;
@Id
@Column(name="ID_A")
public String getIdA(){ return idA; }
public void setIdA(String idA){ this.idA = idA; }
@Id
@Column(name="ID_B")
public String getIdB(){ return idB; }
public void setIdB(String idB){ this.idB = idB; }
static class ClassABId implements Serializable {
private String idA;
private String idB;
public String getIdA(){ return idA; }
public void setIdA(String idA){ this.idA = idA; }
public String getIdB(){ return idB; }
public void setIdB(String idB){ this.idB = idB; }
// implement equals(), hashcode()
}
}
इस उदाहरण ClassABId
में सिर्फ सुविधा के लिए एक स्थिर भीतरी वर्ग है। How to map a composite key with Hibernate?:
ये विकल्प भी इस सवाल का पास्कल Thivent उत्तम जवाब में विस्तार से बताया गया है।
यह संबंधित प्रश्न इन दृष्टिकोणों के बीच मतभेदों पर चर्चा करता है: Which anotation should I use: @IdClass or @EmbeddedId। ध्यान दें कि फ़ील्ड की घोषणा @IdClass
दृष्टिकोण के साथ डुप्लीकेट हो जाती है।
किसी भी तरह, मुझे नहीं लगता कि दो वर्ग बनाने का विकल्प है। यही कारण है कि मैंने इस सवाल से पूछा: Mapping a class that consists only of a composite PK without @IdClass or @EmbeddedId। ऐसा लगता है कि इसके लिए एक हाइबरनेट-विशिष्ट सुविधा है।
एक साइड नोट के रूप में, यदि आपके पास डीबी संरचना पर नियंत्रण है, तो आप समग्र कुंजी से परहेज करने पर भी विचार कर सकते हैं। There are some reasons to do so।
स्रोत
2013-02-06 12:45:17
@Xavi लोपेज़: वे पीके को एकसाथ मिलते हैं। – user2046810