错误产生的原因
public T findOneByCriteria(final DetachedCriteria detachedCriteria) {
Session session = HibernateSessionFactory.currentSession();
Transaction t = session.beginTransaction();
Criteria criteria = detachedCriteria.getExecutableCriteria(session);
T entity = (T)criteria.uniqueResult();
t.commit();
HibernateSessionFactory.closeSession();
return entity;
}
这是个模板类,用criteria查询返回一个实体对象,类似于
T entity =null;
List list = this.findAllByCriteria(dc);
if(list.size()>0)
{
entity =(T) list.get(0);
}
查询全部的记录而只取出一条,据说提供这种uniqueResult方法可以减少网络的阻塞,我没有试验过
但在查询中却产生了错误,看来有利就有弊,spring中也好像没有提供这种方法,似乎是为了避免这种
错误的产生吧。
query 也提供了这个方法,使用中或许也会报这个错误,
如果把握的不好,还是慎用。
转载自原文链接, 如需删除请联系管理员。
原文链接:query did not return a unique result (直译 查询没有返回一个唯一的结果),转载请注明来源!