2012-09-14 11 views
17

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

@Override 
    public List<DocInfo> findAllByDocId(String docId) 
    { 
     Query q = getCurrentSession().createQuery("from DocInfo item where item.id = :docId"); 
     q.setString("docId", docId); 
     List<DocInfo> docInfoList = q.list(); 
     return docInfoList; 
    } 

उत्तर

20

यदि आप गलत नहीं हैं तो आप Query#uniqueResult() का उपयोग हाइबरनेट के साथ कर सकते हैं। मेरे विचार में यही है, जिसकी तलाश में आप हैं। इस मामले में, यदि आपकी क्वेरी से एक से अधिक पंक्तियां लौटा दी गई हैं तो आपको अपने कोड में NonUniqueResultException को संभालना होगा।

3

आप

query.getSingleResult(); 

उपयोग कर सकते हैं जब आप पूरी तरह से सुनिश्चित करें कि क्वेरी केवल एक पंक्ति वापसी होगी और मैं बात कर रहा हूँ के बारे में

import javax.persistence.Query; 
0

आप आईडी (पी) द्वारा लोड कर रहे हैं, तो यह इस प्रकार हैं ऐसा लगता है कि आप यहां हैं, आपको वास्तव में सत्र.लोड/सत्र.गेट का उपयोग करना चाहिए।

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