如何从hibernate查询返回单个结果对象?

Pho*_*nix 17 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;
    }
Run Code Online (Sandbox Code Playgroud)

Gui*_*ido 21

如果我没有错,你可以使用Query#uniqueResult()和Hibernate.我认为这就是你要找的东西.在这种情况下,NonUniqueResultException如果查询返回了多行,则必须在代码中处理.


SiB*_*SiB 6

您可以使用

query.getSingleResult();
Run Code Online (Sandbox Code Playgroud)

当您绝对确定查询只会返回一行时,我正在谈论

import javax.persistence.Query;
Run Code Online (Sandbox Code Playgroud)