2012-09-14 17 views
17

Esecuzione di una query deve sempre restituire un elenco? Come posso sostituire il codice qui sotto se sono sicuro che restituirà un solo oggetto?Come restituire un singolo oggetto risultato dalla query di ibernazione?

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

risposta

20

È possibile utilizzare Query#uniqueResult() con Hibernate se non ho torto. Penso che sia quello che stai cercando. In questo caso, devi gestire lo NonUniqueResultException nel tuo codice se c'è più di una riga restituita dalla tua query.

3

È possibile utilizzare

query.getSingleResult(); 

quando si è assolutamente certi che interrogazione restituisce solo una riga e sto parlando di

import javax.persistence.Query; 
0

Se si sta caricando da id (PK), in quanto sembra che tu sia qui, dovresti invece usare Session.load/Session.get.

Problemi correlati