2013-06-14 9 views
10

के साथ असंबद्ध इकाइयों में शामिल हों दो डेटाबेस टेबलों का विदेशी कुंजी संबंध है।जेपीए एपीआई मानदंड

वे दो संस्थाओं एक और बी जेपीए द्वारा उल्लेख किया जाता है, लेकिन में शामिल होने के स्तंभों को मैन्युअल जेपीए दुनिया कक्षाएं एक और बी संबंधित नहीं हैं संस्थाओं से हटा दिया जाता है, ताकि और आप नेविगेट नहीं कर सकते एक क्षेत्र से दूसरे क्षेत्र में एक क्षेत्र से।

मानदंड एपीआई का उपयोग करना एक क्वेरी बनाना संभव है जो दो तालिकाओं में शामिल हो?

सभी उदाहरण मैं इंटरनेट पर मिलने वाले स्तंभ में शामिल होने का उपयोग करता है लक्ष्य को प्राप्त करने के लिए, लेकिन, जैसा कि ऊपर कहा गया है, यह कोड से निकाल दिया गया है क्योंकि ज्यादातर समय मैं एक और बी के बीच संबंधों में कोई दिलचस्पी नहीं हूँ और मैं संभव ओवरहेड के बारे में डर रहा हूँ।

उत्तर

14

पहला: विदेशी कुंजी संबंध न केवल नौवहन के लिए हैं। वे मुख्य रूप से यह सुनिश्चित करने के लिए सेवा करते हैं कि संबंध में कोई नकली मूल्य पेश नहीं किया जाता है। वे क्वेरी ऑप्टिमाइज़ेशन के लिए डेटाबेस की मदद भी कर सकते हैं। मैं आपको उस पर पुनर्विचार करने की सलाह दूंगा।

वैसे भी, एक प्रश्न कई असंबंधित संस्थाओं का उपयोग करता है बनाने के लिए, तो आप उन्हें from (root) संस्थाओं लगाने की जरूरत है (जैसा कि आप एसक्यूएल में JPQL करना होगा या)

SELECT .... FROM Link l, Training t WHERE l.attribute = t.attribute; 

Root<Link> rootLink = criteriaQuery.from(Link.class); 
Root<Training> rootTraining = criteriaQuery.from(Training.class); 
... 
criteriaQuery.where(
    criteriaBuilder.equal(rootLink.get(link_.linkAttribute), trainingLink)); 
+0

वर्थ (अर्थात एक 'क्रॉस JOIN') संस्थाओं के बीच है। 'कहां' स्थिति के साथ, यह 'इनर जॉइन' के समान व्यवहार करता है (जैसा कि यहां उल्लेख किया गया है [https://stackoverflow.com/questions/670980#671023))। –

2

असंबंधित संस्थाओं पर से जुड़ें नहीं है नवीनतम जेपीए स्पेक द्वारा कवर (2.1)

हालांकि हाइबरनेट 5.1.0+ और ग्रहण लिंक 2.4.0+ समर्थन विज्ञापन शामिल है। http://blog.anthavio.net/2016/03/join-unrelated-entities-in-jpa.html

एक और संभावना देशी क्वेरी यह देखते हुए कि कई जड़ों का उपयोग कर एक कार्तीय उत्पाद बनाता है http://www.oracle.com/technetwork/articles/vasiliev-jpql-087123.html

संबंधित मुद्दे