Как вернуть один объект результата из запроса на спящий режим?

Выполняет ли выполнение запроса всегда список? Как заменить код ниже, если я уверен, что он вернет только один объект?

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

Ответы

Ответ 1

Вы можете использовать Query # uniqueResult() с Hibernate, если я не ошибаюсь. Я думаю, это то, что вы ищете. В этом случае вы должны обрабатывать NonUniqueResultException в своем коде, если из вашего запроса было несколько строк.

Ответ 2

Вы можете использовать

query.getSingleResult();

когда вы абсолютно уверены, что запрос вернет только одну строку, и я говорю о

import javax.persistence.Query;

Ответ 3

Если вы загружаете идентификатор (pk), как вы видите здесь, вы действительно должны использовать Session.load/Session.get.