org.hibernate.NonUniqueResultException: query 没有返回唯一结果:2?

2022-08-31 15:24:14

我的DAO中有以下代码:

String sql = "SELECT COUNT(*) FROM CustomerData " +
             "WHERE custId = :custId AND deptId = :deptId";
Query query = session.createQuery(sql);
query.setParameter("custId", custId);
query.setParameter("deptId", deptId);
long count = (long) query.uniqueResult(); // ERROR THROWN HERE

休眠在标记的行处抛出以下异常:

org.hibernate.NonUniqueResultException: query 未返回唯一结果:

我不确定发生了什么,因为总是只返回一行。count(*)

此外,当我直接在db上运行此查询时,它将结果返回为1。那么问题出在哪里呢?


答案 1

您的查询似乎返回了多个结果,请检查数据库。在文档中,您可以阅读:query.uniqueResult()

Throws: org.hibernate.NonUniqueResultException - 如果有多个匹配结果

如果要避免此错误并且仍然使用唯一的结果请求,则可以使用这种解决方法query.setMaxResults(1).uniqueResult();


答案 2

Hibernate Optional findTopByClientIdAndStatusOrderByCreateTimeDesc(Integer clientId, Integer status);

“查找顶部”!!唯一的一个结果!


推荐