2012-09-14 5 views
17

Muss eine Abfrageausführung immer eine Liste zurückgeben? Wie kann ich den folgenden Code ersetzen, wenn ich sicher bin, dass nur ein einzelnes Objekt zurückgegeben wird?Wie wird ein einzelnes Ergebnisobjekt aus der Hibernate-Abfrage zurückgegeben?

@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; 
    } 

Antwort

20

Sie können Query#uniqueResult() mit Hibernate verwenden, wenn ich nicht falsch liege. Ich denke, das ist es wonach Sie suchen. In diesem Fall müssen Sie die NonUniqueResultException in Ihrem Code behandeln, wenn mehr als eine Zeile von Ihrer Abfrage zurückgegeben wird.

3

können Sie verwenden

query.getSingleResult(); 

, wenn Sie absolut sicher sind, dass Abfrage nur eine Zeile zurückgeben würde und ich rede

import javax.persistence.Query; 
0

Wenn Sie mit dem id (pk) geladen werden, da es Wenn Sie hier sind, sollten Sie stattdessen Session.load/Session.get verwenden.

Verwandte Themen