查询执行是否总是要返回一个列表?如果我确定它只返回一个对象,我该如何替换下面的代码?
@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;
}
答案 0 :(得分:20)
如果我没有错,您可以将Query#uniqueResult()与Hibernate一起使用。我认为这就是你要找的东西。在这种情况下,如果查询中返回了多行,则必须处理代码中的NonUniqueResultException
。
答案 1 :(得分:3)
您可以使用
query.getSingleResult();
当你完全确定查询只返回一行而我正在谈论
时import javax.persistence.Query;
答案 2 :(得分:0)
如果您按id(pk)加载,因为看起来你在这里,你真的应该使用Session.load / Session.get。