2012-09-14 17 views
17

Bir sorgu yürütme her zaman bir liste döndürmek zorunda mı? Yalnızca tek bir nesneyi döndüreceğinden emin olduğumda aşağıdaki kodu nasıl değiştiririm?Tek bir sonuç nesnesini hazırda bekletme sorgusundan nasıl döndürürüm?

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

cevap

20

Query#uniqueResult() Hatalı durumdayken Hazırda Bekletme özelliğini kullanarak kullanabilirsiniz. Bence aradığın şey bu. Bu durumda, sorgunuzda birden fazla satır varsa, kodunuzda NonUniqueResultException'u işlemeniz gerekir. Sorgu yalnızca bir satırı dönecekti ve ben yaklaşık

import javax.persistence.Query; 
3

Sen

query.getSingleResult(); 

kullanabilirsiniz Buradasınız, Session.load/Session.get yerine gerçekten kullanmalısınız.

0

Eğer id (pk) tarafından yükleniyorsa, bunun yanı konuşuyorum kesinlikle emin olduğunuzda

İlgili konular