getSingleResult
साथ getResultList
से संबंधित प्रदर्शन में लाभ है NonUniqueResultException
फेंकता है, अगर वहाँ कई पंक्तियों कर रहे हैं। यह वास्तव में एक परिणाम होने पर एकल परिणाम पुनर्प्राप्त करने के लिए डिज़ाइन किया गया है।
तरह से तुमने किया था ठीक है और जेपीए इस ठीक से संभाल बनाया गया है। उसी समय, आप इसे getSingleResult
के विरुद्ध किसी भी तरह से तुलना नहीं कर सकते, क्योंकि यह काम नहीं करेगा।
हालांकि, आप जिस कोड पर काम कर रहे हैं उस पर निर्भर करते हैं, यदि आप जो भी चाहते हैं, उसे वापस करने के लिए क्वेरी को परिष्कृत करना हमेशा बेहतर होता है - तो आप केवल getSingleResult
पर कॉल कर सकते हैं।
Query query = em.createQuery("your query");
List<Element> elementList = query.getResultList();
return CollectionUtils.isEmpty(elementList) ? null : elementList.get(0);
नल पॉइंटर एक्सेप्शन, गारंटी केवल 1 परिणाम दिया जाता है के खिलाफ यह सुरक्षा उपायों:
स्रोत
2011-12-14 06:06:29
"लेकिन यह ecxeption को जन्म देती है।" यह क्या अपवाद उठा रहा है? (वास्तव में उनमें से दोनों अपवाद बढ़ा सकते हैं)। मैं प्रदर्शन के बारे में पता नहीं है (जो भी अधिक performant है, यह नगण्य होना चाहिए), लेकिन लगता है कि 'getSingleResult' अपने कोड अधिक पठनीय बनाता है। –
हां, मैं मानता हूं कि getSingleResult अधिक पढ़ने योग्य है। मैं सिर्फ यह जानना चाहता हूं कि कौन सा अपमान अधिक कुशल है। – Pilgrim