2014-04-15 22 views
8

के साथ शामिल हो गया है मैं वसंत डेटा जेपीए और querydsl का उपयोग कर रहा हूं और दो टेबल में शामिल होने के लिए सरल अच्छी क्वेरी लिखने के तरीके पर फंस गया हूं। मान लीजिए मैं एक परियोजना इकाई और OneToMany संबंध परियोजना में परिभाषित के साथ एक टास्क इकाई है, मैं की तरह कुछ करना चाहते हैं:वसंत डेटा जेपीए और querydsl

select * from project p left join task t on p.id = t.project_id where p.id = searchTerm 
select * from project p left join task t on p.id = t.project_id where t.taskname = searchTerm 

JPQL में, यह होना चाहिए:

select distinct p from Project p left join p.tasks t where t.projectID = searthTerm 
select distinct p from Project p left join p.tasks t where t.taskName = searthTerm 

मैं एक है ProjectRepository इंटरफ़ेस, जो JpaRepository और QueryDslPredicateExecutor को बढ़ाता है। जो मुझे विधि करने के लिए पहुँच देता है:

Page<T> findAll(com.mysema.query.types.Predicate predicate, Pageable pageable) 

मुझे पता है कि बाएं में शामिल होने के लिए आसानी से एक नया JPAQuery (entityManager) बनाने के द्वारा प्राप्त किया जा सकता। लेकिन मेरे पास वसंत डेटा जेपीए के साथ स्पष्ट रूप से इंजेक्शन वाले इकाई प्रबंधक नहीं हैं। क्या बाएं शामिल होने के साथ भविष्यवाणी करने का कोई अच्छा और आसान तरीका है? इच्छा है कि यहां किसी ने इसका अनुभव किया है और मुझे एक उदाहरण देने में सक्षम है। धन्यवाद।

फ्री।

+0

क्या आप जेपीक्यूएल में जो चाहिए उसे व्यक्त कर सकते हैं और एसक्यूएल में नहीं? अब मुझे यकीन नहीं है कि क्या आपको लोडिंग या कुछ और के लिए बाएं शामिल होने की आवश्यकता है। –

+0

हाय टिमो, जेपीक्यूएल अभिव्यक्ति अनुरोध के रूप में जोड़ा गया –

उत्तर

6

आप कार्यों पर एक बाधा को व्यक्त करना चाहते हैं तो आप इस

QProject.project.tasks.any().id.eq(searchTerm) 

की तरह यह कर सकते हैं आप के बजाय एक छोड़ दिया के माध्यम से कुछ कार्यों के प्रीलोड व्यक्त करने के लिए आप व्यक्त नहीं कर सकते शामिल होने कि एक विधेय के माध्यम से चाहते हैं । Querydsl में एक भविष्यवाणी कहां, जुड़ने और क्वेरी के कुछ हिस्सों के लिए एक बूलियन अभिव्यक्ति है।

+0

हाय तिमो, उत्तर के लिए धन्यवाद। क्या आपका मतलब है कि कोई भी() केवल विदेशी तालिका से डेटा लोड किए बिना बाधा प्रदान कर सकता है? –

+0

हां, यह समाधान केवल परिणामों पर एक बाधा प्रदान करता है, यह लोडिंग को प्रभावित नहीं करता है –

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