2011-03-04 10 views
23

का चयन करने के लिए, मैं के बराबर पर अमल करना चाहते हैं:हाइबरनेट की मानदंड और अनुमान का उपयोग हाइबरनेट की मानदंड का उपयोग करना अधिक अलग-अलग कॉलम

ProjectionList projList = new ProjectionList(); 
projList.add(Projections.distinct(Projections.property("id.state"))); 
projList.add(Projections.distinct(Projections.property("id.uspsCity"))); 
criteria.setProjection(projList); 
:

select distinct uspscity, state from citycomplete where USPSCITY = 'HOUSTON' 

मैं कर सोचा परिणाम मैं चाहता था प्राप्त होते हैं निम्नलिखित

लेकिन, वास्तव में यह क्या करता है जैसे कुछ:

select distinct uspscity, distinct state from citycomplete where USPSCITY = 'HOUSTON' 

जो स्पष्ट रूप से एक त्रुटि फेंकता है।

मानदंड का उपयोग न करने के अलावा, क्या इसका समाधान है?

धन्यवाद,

ब्रैंडन

उत्तर

48
ProjectionList projList = Projections.projectionList(); 
projList.add(Projections.property("id.state")); 
projList.add(Projections.property("id.uspsCity")); 
criteria.setProjection(Projections.distinct(projList)); 
+5

'ProjectionList projList = नए ProjectionList();' मान्य के बाद से 'ProjectionList()' निर्माता नहीं दिख रहा है नहीं है। यह 'प्रोजेक्शनलिस्ट प्रोजलिस्ट = प्रोजेक्शन.projectionList() होना चाहिए; ' – destan

+0

धन्यवाद @ डेस्टन। मैंने जवाब तय किया। –

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