【问题标题】:how to fix this issue org.hibernate.NonUniqueResultException: query did not return a unique result: 4如何解决此问题 org.hibernate.NonUniqueResultException:查询未返回唯一结果:4
【发布时间】:2024-05-16 03:50:02
【问题描述】:

这是我在 Dao 中的代码 session = sessionFactory.openSession(); tx = session.beginTransaction(); Criteria criteria = session.createCriteria(Router.class); criteria.add(Restrictions.eq("router_id", router_id));
Router router = (Router) criteria.uniqueResult();
tx.commit(); session.close(); return router;

在 Hibernate 中变成这样 {"org.hibernate.NonUniqueResultException: query did not return a unique result: 4"}

提前致谢

【问题讨论】:

标签: spring hibernate


【解决方案1】:

根据官方休眠文档,

当应用程序调用 Query.uniqueResult() 并且查询返回多个结果时抛出。

在您的情况下,返回 4 个结果。确保您的查询只返回一个结果。

【讨论】:

  • 是的,我得到了多个结果。但我只需要最后更新的结果。
  • 我怎样才能得到最后更新的结果?提前致谢
  • 使用 setMaxResults 得到 1 个结果。 @BMAM
  • @BMAM 有多种方法可以获得最后更新的结果,例如在表中的最后更新时间获得第一个结果(假设你有一个,使用 HQL 或标准很容易做到)。您可以创建一个新线程来获得有关此问题的帮助。