2010-05-26 5 views
7

मैं ओआरएम सामान के लिए नया हूं और मुझे कुछ समझने में कुछ मदद चाहिए।जेपीए और कुल कार्य। मैं क्वेरी के परिणाम का उपयोग कैसे करूं?

के मैं निम्नलिखित मानक SQL क्वेरी है मान लेते हैं:

SELECT *, COUNT(test.testId) AS noTests FROM inspection 
LEFT JOIN test ON inspection.inspId = test.inspId 
GROUP BY inspection.inspId 

जो मैं जेपीए में उपयोग करना चाहते हैं।

मेरे पास एक टेस्ट इकाई के साथ एक से अधिक संबंधों के साथ एक निरीक्षण इकाई है।

Query query = em.createQuery("SELECT insp, COUNT(???what???) " + 
     "FROM Inspection insp LEFT JOIN insp.testList " + 
     "GROUP BY insp.inspId"); 

1) मैं कैसे COUNT खंड लिख सकता हूँ: मैं JPQL में इस लेखन की कोशिश की (एक निरीक्षण कई परीक्षण है) ? मुझे टेस्ट टेबल से तत्वों पर गिनती लागू करनी होगी, लेकिन टेस्टलिस्ट एक संग्रह है, इसलिए मैं COUNT(insp.testList.testId)

2) मान लीजिए 1 को हल किया गया है, किस प्रकार का ऑब्जेक्ट वापस किया जाएगा। यह निश्चित रूप से एक निरीक्षण वस्तु नहीं होगी ... मैं परिणाम का उपयोग कैसे करूं?

उत्तर

16
  1. आप में शामिल हो गए संस्था के लिए एक उपनाम (AS के साथ)
  2. आप एक नया वस्तु बना सकते हैं या तो, या लौटे मूल्यों

तो साथ एक List दे सकते हैं:

SELECT new com.yourproject.ResultHolder(insp, COUNT(test.testId)) 
    FROM Inspection insp LEFT JOIN insp.testList AS test GROUP BY insp.inspId 

या

SELECT new list(insp, COUNT(test.testId)) 
    FROM Inspection insp LEFT JOIN insp.testList AS test GROUP BY insp.inspId 

परिणाम या तो ResultHolder का एक उदाहरण के रूप में या एक java.util.List, जहां insplist.get(0) है के रूप में तो उपलब्ध है, और गिनती list.get(1)

+0

आपको बहुत बहुत धन्यवाद है। यह काम करता हैं! – Bogdan

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