hibernate query did not return a unique result: 2
错误原因是:数据库中存在两个相同的对象,而hibernate 中 uniqueResult()是返回唯一一个对象。
解决方法:
1)query.setMaxResults(1).uniqueResult();
看到一种很好的解释是:Hibernate可以使用Query.setMaxResults方法简单地设置需要查询的最大结果集,然后Hibernate会自动根据所设置的数据库方言翻译成相应的SQL语句提交给数据库。比如如果数据库是Oracle,SQL Server等,则翻译为类似select ... top 10之类的SQL语句,若是MySQL,则翻译为select ... limit 10之类的SQL~
这里.setMaxResults(1),则会在数据库中取一条数据返回。
2)query.list().get(0) ; hibernate .list()方法是取出对象结果集返回,然后get(0)是取出集合中第一个对象。
然而,这里有一个坑.... 就是你必须得判断list 是否为空,否则空对象.get(0) 还是会报错哇...