में गैर प्राथमिक कुंजी कॉलम वाले टेबल में शामिल हों मैं विरासत प्रणाली पर काम कर रहा हूं, डेटाबेस से कुछ जानकारी पढ़ने की जरूरत है।
VendorContactBridge (bridgeId -pk, vendorEid, contactEid)
संपर्क (contactId -pk, contactEid, फोन)कई एसोसिएशन में से एक - जेपीए
vendorEid और contactEid - नीचे दी गई तालिका संबंध
विक्रेता (pk, vendorEid, नाम vendorId) कर रहे हैं तालिका की प्राथमिक कुंजी नहीं है लेकिन तालिका में शामिल हों VendorContactBridge में कॉलम में शामिल होने के रूप में उपयोग किया जाता है।
विक्रेता इकाई -
@Entity
@Table(name="Vendor")
public class Vendor implements Serializable{
@Id
@Column(name="VENDORID")
private BigDecimal vendorId;
@Column(name="VENDOREID")
private BigDecimal vendorEid;
@OneToMany(fetch = FetchType.EAGER)
@JoinTable(name="VENDORCONTACTBRIDGE",
joinColumns={@JoinColumn(name="VENDOREID", referencedColumnName="VENDOREID")},
inverseJoinColumns={@JoinColumn(name="CONTACTEID", referencedColumnName="CONTACTEID")})
private Set<Contact> vendorContact;
}
संपर्क इकाई -
@Entity
@Table(name="CONTACT")
public class Contact implements Serializable{
@Id
@Column(name="CONTACTID")
private BigDecimal contactId;
@Column(name="CONTATEID")
private BigDecimal contactEId;
@ManyToOne
@JoinTable(name="VENDORCONTACTBRIDGE",
joinColumns={@JoinColumn(name="CONTACTEID", referencedColumnName="CONTATEID")},
inverseJoinColumns={@JoinColumn(name="VENDOREID", referencedColumnName="VENDOREID")})
private Vendor vendor;
}
जबकि क्वेरी चलाने, अपवाद नीचे हो रही
SecondaryTable JoinColumn एक गैर प्राथमिक कुंजी संदर्भ नहीं दे सकता।
मैंने विक्रेता इकाई में दिए गए उत्सुक fetch को हटा दिया, मुझे कोई अपवाद नहीं मिला है लेकिन यह संग्रह लोड नहीं करता है। एसोसिएशन के साथ क्या गलत है?
विकल्प 2: क्या आप मतलब है, मैं दो डाटाबेस VendorEid और दोबारा के आधार पर VendorContactBridge से ContactEid हो रही पर संपर्क ContactEid पर ased के लिए एक फोन करना चाहिए? क्या मेरी समझ सही है? – Pankaj
वह मूल प्रिंसिपल होगा। लेकिन मूल क्वेरी का उपयोग करना सबसे अच्छा होगा क्योंकि आप शामिल होने में सक्षम होंगे और इस प्रकार वस्तुओं को पुनर्प्राप्त करने के लिए एक एकल SQL क्वेरी का उपयोग करें। – Eelke