2012-05-18 12 views
34

मैं हाइबरनेट का उपयोग करके, संपूर्ण ऑब्जेक्ट के बजाय एक कॉलम चुनना चाहता हूं। अब तक मैं इस है:हाइबरनेट का उपयोग करके आप कॉलम का चयन कैसे करते हैं?

List<String> firstname = null; 

firstname = getSession().createCriteria(People.class).list(); 

मेरे समस्या यह है कि इसके बाद के संस्करण कोड रिटर्न पूरे लोग तालिका बस "firstname" के बजाय एक वस्तु के रूप है। मुझे यकीन नहीं है कि पूरे ऑब्जेक्ट के बजाय केवल "firstname" को वापस करने के लिए कैसे निर्दिष्ट किया जाए।

उत्तर

43

आप इस तरह के लिए प्रोजेक्शन सेट कर सकते हैं:

.setProjection(Projections.property("firstname")) 

इस के साथ आप केवल बदले में firstname मिल सकती है।

मुझे एक ही परिदृश्य के साथ स्टैक पर एक और लिंक मिला है। उम्मीद है कि यह भी मदद मिलेगी How to use hibernate criteria to return only one element of an object instead the entire object?

7

आप 2 या अधिक स्तंभों क्वेरी और क्वेरी से मूल्यों को प्राप्त करने के लिए की जरूरत है, इस तरह से यह करने के लिए है:

.... 
crit.setProjection(Projections.property("firstname")); 
crit.setProjection(Projections.property("lastname")); 

List result = crit.list(); 

... 

for (Iterator it = result.iterator(); it.hasNext();) { 
    Object[] myResult = (Object[]) it.next(); 
    String firstname = (String) myResult[0]; 
    String lastname = (String) myResult[1]; 

    .... 
} 
2

आप ProjectionList उपयोग कर सकते हैं यदि आप चाहते हालत आधार प्रक्षेपण उदाहरण

ProjectionList prjection = Projections.projectionList(); 
if(abc){ 
    prjection.add(Projections.property("firstname")); 
} 
else if(xyz){ 
    prjection.add(Projections.property("lastname")); 
} 

    ........ 

    criteria.setProjection(prjection); 
संबंधित मुद्दे