पर विचार करें निम्नलिखित मॉडलजेपीए: कैसे बेसब्री से एक एम्बेडेड तत्व संग्रह
@Entity
// JPA and JAXB annotations here
public class Employee implements Serializable {
// other fields, annotations, stuffs
...
@ElementCollection(fetch = FetchType.LAZY,
targetClass = Address.class)
@CollectionTable(name = "employee_address",
schema = "hris",
joinColumns = @JoinColumn(name = "employee_id",
nullable = false,
referencedColumnName = "employee_id",
foreignKey = @ForeignKey(ConstraintMode.CONSTRAINT)))
protected Set<Address> addresses;
// setters, getters
...
}
@Embeddable
// JAXB annotations here
public class Address implements Serializable {
// fields, setters, getters
}
Address
वर्ग @Embeddable
टिप्पणी के साथ टिप्पणी की जाती है, और Employee
वर्ग addresses
की एक एम्बेडेड तत्व संग्रह है लाने के लिए। तत्व संग्रह का fetch
FetchType.LAZY
पर सेट है। अब, मैं @NamedQuery
बनाना चाहता हूं जो सभी कर्मचारियों को उत्सुकतापूर्वक प्रारंभ किए गए पते के साथ पुनर्प्राप्त करेगा। यह जानकर कि JOIN FETCH
will only work with entity collections जेपीए 2.1 के आधार पर @OneToMany
या @ManyToMany
के साथ एनोटेटेड, मैं एक वैध JPQL
क्वेरी कैसे बनाऊंगा जो मुझे एम्बेडेड तत्व संग्रह को उत्सुकता से पुनर्प्राप्त करने की अनुमति देगी?
आपने कैसे निष्कर्ष निकाला कि 'fetch' में शामिल हों केवल इकाइयों के साथ काम करता है? क्या आपने इसे आज़माया? –
@DraganBozanovic: प्रलेखन के आधार पर, "फ़ेच जॉइन क्लॉज के दाईं ओर संदर्भित एसोसिएशन एक ऐसा संगठन होना चाहिए जो क्वेरी के परिणामस्वरूप लौटाई गई इकाई से संबंधित हो। इसे निर्दिष्ट करने की अनुमति नहीं है फ़ेच जॉइन क्लॉज के दाईं ओर संदर्भित इकाइयों के लिए पहचान चर, और इसलिए पूरी तरह से प्राप्त इकाइयों के संदर्भ क्वेरी में कहीं और नहीं दिखाई दे सकते हैं। " –
संग्रह-मूल्यवान पथ को एक एसोसिएशन फ़ील्ड को हल करना होगा –