2012-09-14 9 views
17

¿La ejecución de una consulta siempre tiene que devolver una lista? ¿Cómo reemplazo el código a continuación si estoy seguro de que solo devolverá un solo objeto?¿Cómo devolver un solo objeto de resultado de la consulta de hibernación?

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

Respuesta

20

Puede utilizar Query#uniqueResult() con Hibernate si no estoy equivocado. Creo que eso es lo que estás buscando. En este caso, debe manejar el NonUniqueResultException en su código si hay más de una fila devuelta de su consulta.

3

Puede utilizar

query.getSingleResult(); 

cuando esté absolutamente seguro de que consulta devolvería sólo una fila y estoy hablando de

import javax.persistence.Query; 
0

Si va a cargar por id (pk), ya que parece que estás aquí, realmente deberías usar Session.load/Session.get en su lugar.

Cuestiones relacionadas