如何解决此问题 org.hibernate.NonUniqueResultException:查询未返回唯一结果:4
Posted
技术标签:
【中文标题】如何解决此问题 org.hibernate.NonUniqueResultException:查询未返回唯一结果:4【英文标题】:how to fix this issue org.hibernate.NonUniqueResultException: query did not return a unique result: 4 【发布时间】:2018-06-04 19:10:26 【问题描述】:这是我在 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"
提前致谢
【问题讨论】:
你可以像this这样更新时间戳,或者如果你已经有一个带有时间戳的字段,你需要修改你的查询。 org.hibernate.NonUniqueResultException: query did not return a unique result: 2?的可能重复 【参考方案1】:根据官方休眠文档,
当应用程序调用 Query.uniqueResult() 并且查询返回多个结果时抛出。
在您的情况下,返回 4 个结果。确保您的查询只返回一个结果。
【讨论】:
是的,我得到了多个结果。但我只需要最后更新的结果。 我怎样才能得到最后更新的结果?提前致谢 使用 setMaxResults 得到 1 个结果。 @BMAM @BMAM 有多种方法可以获得最后更新的结果,例如在表中的最后更新时间获得第一个结果(假设你有一个,使用 HQL 或标准很容易做到)。您可以创建一个新线程来获得有关此问题的帮助。以上是关于如何解决此问题 org.hibernate.NonUniqueResultException:查询未返回唯一结果:4的主要内容,如果未能解决你的问题,请参考以下文章