首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >org.hibernate.NonUniqueResultException:查询没有返回唯一的结果: 2?

问org.hibernate.NonUniqueResultException:查询没有返回唯一的结果: 2?
EN

Stack Overflow用户
提问于 2014-05-26 09:15:44
回答 14查看 214.3K关注 0票数 67

我的DAO中有以下代码:

代码语言:javascript
复制
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

Hibernate在异常下方抛出标记行:

org.hibernate.NonUniqueResultException:查询没有返回唯一的结果:

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

同样,当我直接在db上运行这个查询时,它将结果作为1返回。那么问题是什么呢?

EN

回答 14

Stack Overflow用户

发布于 2016-10-25 07:19:39

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

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

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

票数 44
EN

Stack Overflow用户

发布于 2019-06-15 01:56:43

Hibernate可选findTopByClientIdAndStatusOrderByCreateTimeDesc(Integer clientId,整数状态);

"findTop"!唯一的结果!

票数 22
EN

Stack Overflow用户

发布于 2018-11-29 08:54:36

我不认为其他答案解释了关键的部分:为什么"COUNT(*)“返回多个结果?

我今天刚刚遇到了同样的问题,我发现如果您有另一个类扩展目标映射类(此处为"CustomerData"),Hibernate将执行此操作。

希望这能为其他不幸的人节省点时间。

票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23866709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档