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

时间:2012-09-14 15:36:14

标签: 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;
    }

3 个答案:

答案 0 :(得分:20)

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

答案 1 :(得分:3)

您可以使用

query.getSingleResult();

当你完全确定查询只返回一行而我正在谈论

import javax.persistence.Query;

答案 2 :(得分:0)

如果您按id(pk)加载,因为看起来你在这里,你真的应该使用Session.load / Session.get。