19

クエリの実行は常にリストを返す必要がありますか? 単一のオブジェクトのみを返すことが確実な場合、以下のコードを置き換えるにはどうすればよいですか?

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

3 に答える 3

22

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

于 2012-09-14T15:40:24.137 に答える
6

使用できます

query.getSingleResult();

クエリが1行だけを返すと絶対に確信していて、私が話しているのは

import javax.persistence.Query;
于 2012-09-14T15:43:31.340 に答える
0

ID (pk) でロードしている場合は、ここに表示されているように、代わりに Session.load/Session.get を使用する必要があります。

于 2012-09-14T17:21:18.377 に答える