तीन टेबल तीन संस्थाओं के रूप में मॉडलिंग की हैं:जेपीए 3-जिस तरह से व्याख्या में शामिल होने
@Entity
@Table(name="event")
public class Event {
public Long datetime;
public String name;
public Long processId;
}
@Entity
@Table(name="process")
public class Process {
public Long Id;
public Long sequence;
public Name name;
}
@Entity
@Table(name="operation")
public class Operation {
public Long Id;
public Long datetime;
public Long sequence;
}
प्रक्रिया आपरेशन-अनुक्रम का कोई भी अद्वितीय एकल रिकॉर्ड एसक्यूएल की कोई समस्या 3-जिस तरह से शामिल होने के है के द्वारा प्राप्त किया जाता है:
SELECT *
FROM event e, process p, operation q
WHERE e.processId = p.id
AND e.datetime = q.datetime
AND p.sequence = q.sequence
कि लागू करने के लिए जेपीए में, मैं आपरेशन के,
एक सूची है जो स्पष्ट रूप JQPL समानता p.sequence अपरोक्ष एक भी रिकॉर्ड तक ही सीमित हो जाएगा = q.sequence करना हैJPQL कहाँ निर्दिष्ट करता सकर्मक 3 बाधा में शामिल होने:
SELECT e FROM Event e
INNER JOIN FETCH e.process p
INNER JOIN FETCH e.operations q
WHERE p.sequence = q.sequence
हालांकि, मैं सभी तीन की कमी इकाई POJO अंदर तैयार किया जा करना चाहते हैं। अकेले जेपीए एनोटेशन का इस्तेमाल तीन तरह से जुड़ने के लिए नहीं किया जाना चाहिए? निम्नलिखित इकाई छद्म कोड दिखाता है के रूप में:
@Entity
@Table(name="event")
public class Event {
public Long datetime;
public String name;
public Long processId;
@OneToOne
@JoinColumn(
name = "processId", referencedColumnName="id",
insertable=false, updatable=false)
private Process process;
@OneToOne
@JoinColumn(
name = "datetime", referencedColumnName="datetime",
insertable=false, updatable=false)
@JoinColumn(
name = "process.sequence", referencedColumnName="sequence",
insertable=false, updatable=false)
private Operation operations;
}
तो यह है कि यह निर्दिष्ट करना आवश्यक नहीं होगा JPQL
SELECT e FROM Event e
INNER JOIN FETCH e.process p
INNER JOIN FETCH e.operations q
में बाधा सकर्मक-में शामिल होने मैं एक सकर्मक कैसे मॉडल जेपीए एनोटेशन का उपयोग शामिल होते हैं?
Btw, मैं बाहर छोड़ दिया है JAXB एनोटेशन। ईवेंट पूरी तरह से एक्सएमएल रूट टैग होना चाहिए। इसलिए, इवेंट POJO का उपयोग करके इकाई का मॉडल किया जा रहा है। इवेंट इकाई का उपयोग सीधे एक्सएमएल डीटीओ थ्रो जेएक्सबी के रूप में किया जाता है। यही कहना है, आपको यह सुझाव नहीं देना चाहिए कि मैं रूट के रूप में एक और POJO का उपयोग करता हूं। –
मैं आपकी समस्या के बारे में 100% निश्चित नहीं हूं ... यदि आप जुड़ने के ऑन क्लॉज को निर्दिष्ट करते हैं, तो क्या यह आपकी समस्या का समाधान नहीं करता है? – slambeth