2009-05-29 17 views
11

मैं struts 2 और में एक आवेदन के विकास कर रहा हूँ के साहचर्य सरणी के रूप में हाइबरनेट क्वेरी परिणाम हाइबरनेट 3.सूची या hashmap

लाने के लिए मैं कैसे 3 टेबल

  1. निरीक्षण
  2. InspectionMission
  3. है टाइमलाइन

Inspectionसे जुड़ा हुआ है 0 और InspectionMissionTimeline से जुड़ा हुआ है।

अब मुझे समस्या है। मैं HQL

में
public List getQuartewiseInspectionList(){ 

    Session session = HibernateUtil.getSessionFactory().getCurrentSession(); 

    Query q = session.createQuery(
       "select count(i.inspectionId) as tot_inspections,t.year,t.quarter" + 
       " From Inspection as i " + 
       " inner join i.inspectionMission as im inner join im.timeline as t" + 
       " GROUP by t.year,t.quarter"); 

    return q.list(); 

} 

मैं परिणाम लाने के लिए चाहते हैं निम्न क्वेरी में लिखा है के रूप में

result[0][tot_inspections] = "6" 
result[0][year] = "2009"; 
result[0][quarter] = "Q2"; 

result[1][tot_inspections] = "3" 
result[1][year] = "2009"; 
result[1][quarter] = "Q3"; 

और इतने पर निम्नलिखित ताकि मैं इस प्रकार jsp struts में प्रदर्शित कर सकते हैं:

JSP मैं में निम्नलिखित कोड

<table border="1"> 

    <s:iterator value="result" status="status"> 
     <tr class="<s:if test="#status.even">even</s:if><s:else>odd</s:else>"> 
      <td class="nowrap"><s:property value="tot_inspections" /></td> 
      <td class="nowrap"><s:property value="year" /></td> 
      <td class="nowrap"><s:property value="quarter" /></td> 
     </tr>   
    </s:iterator> 
</table> 

क्या कोई यहां मेरी सहायता कर सकता है?

उत्तर

27

आप (हाइबरनेट संदर्भ पैरा 14,6)

select new map(count(i.inspectionId) as tot_inspections, t.year as year, t.quarter as quarter) from ... 

क्वेरी का शेष भाग में ही है "नया नक्शा" सिंटैक्स का उपयोग करने के लिए है। यह नक्शे की एक सूची लौटाएगा, जहां कुंजी "कॉलम" का उपनाम है।

+1

हैलो साल्वाटोर इंसालाको, आपके उत्तर के लिए धन्यवाद। मैं इस समाधान के लिए पिछले 2 दिनों की खोज कर रहा था और आपके उत्तर ने मुझे यह प्रदान किया। सही उत्तर के लिए धन्यवाद। – amar4kintu

+0

यह वही था जो मुझे चाहिए था, लेकिन हाइबरनेट दस्तावेज़ों में नहीं मिला। – wprl

+0

वास्तव में बढ़िया, धन्यवाद –

1

एक और समाधान डेटा परिणामों को केवल उन परिणामों को प्रदर्शित करने के लिए परिभाषित करना होगा और हाइबरनेट को फ्लाई पर उन लोगों के उदाहरण बनाने दें। इस वर्ग को सिर्फ एक मिलान करने वाले कन्स्ट्रक्टर की आवश्यकता होगी।

उदाहरण वर्ग (getters और क्षेत्रों छोड़े गए)

public class InspectionCount() { 
    // fields 
    public InspectionCount(int count, int year, int quarter) { 
     // initialize instance 
    } 
    // getters 
} 

क्वेरी तो लगेगा नतीजतन

select new InspectionCount(count(i.inspectionId), t.year, t.quarter) 
     from Inspection as i 
     inner join i.inspectionMission as im inner join im.timeline as t 
     group by t.year,t.quarter 

आप InspectionCount के List रों मिलेगा।

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