我的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 HEREHibernate在异常下方抛出标记行:
org.hibernate.NonUniqueResultException:查询没有返回唯一的结果:
我不确定发生了什么,因为count(*)总是只返回一行。
同样,当我直接在db上运行这个查询时,它将结果作为1返回。那么问题是什么呢?
发布于 2016-10-25 07:19:39
您的查询似乎返回多个结果,检查数据库。在query.uniqueResult()文档中,您可以阅读:
抛出: org.hibernate.NonUniqueResultException -如果有多个匹配结果
如果您希望避免此错误,并且仍然使用唯一的结果请求,则可以使用这种解决方法query.setMaxResults(1).uniqueResult();。
发布于 2019-06-15 01:56:43
Hibernate可选findTopByClientIdAndStatusOrderByCreateTimeDesc(Integer clientId,整数状态);
"findTop"!唯一的结果!
发布于 2018-11-29 08:54:36
我不认为其他答案解释了关键的部分:为什么"COUNT(*)“返回多个结果?
我今天刚刚遇到了同样的问题,我发现如果您有另一个类扩展目标映射类(此处为"CustomerData"),Hibernate将执行此操作。
希望这能为其他不幸的人节省点时间。
https://stackoverflow.com/questions/23866709
复制相似问题