2012-09-14 5 views
17

クエリの実行は常にリストを返す必要がありますか? 1つのオブジェクトだけを返すと確信している場合、以下のコードをどのように置き換えるのですか?Hibernateクエリから単一の結果オブジェクトを返す方法はありますか?

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

答えて

20

私が間違っていない場合は、Query#uniqueResult()をHibernateで使用できます。私はそれがあなたが探しているものだと思います。この場合、クエリから返される行が複数ある場合は、NonUniqueResultExceptionをコード内で処理する必要があります。

3

クエリが1行のみを戻すだろうと絶対に確信している、あなたはそれとして、ID(PK)によってロードされている場合、私はおよそ

import javax.persistence.Query; 
0

を話しているとき、あなたは

query.getSingleResult(); 

を使用することができますあなたがここにいるようですが、代わりにSession.load/Session.getを使うべきです。

関連する問題