我有一个hql请求,看起来像:
select Distinct prof
from Professor as prof
left join fetch prof.students as stud
教授和学生之间有很多关系。
我想按学生姓名订购教授名单。
我试过了 :
select Distinct prof
from Professor as prof
left join fetch prof.students as stud
order by prof.students.name
我得到了错误:
严重:org.springframework.orm.hibernate3.HibernateQueryException:非法尝试取消引用集合
我也尝试过:
select Distinct prof
from Professor as prof
left join fetch prof.students as stud
order by stud.name
我得到了错误:
严重:org.springframework.dao.InvalidDataAccessResourceUsageException:无法执行查询;
我可以按条款订购吗?还是休眠映射不允许这样的请求?
最佳答案
从查询中删除Distinct
关键字。然后,如果需要消除重复项,请使用ResultTransformer来为您合并结果集。
String hql = "select prof from Professor as prof left join fetch prof.students as stud order by stud.name";
Query query = session.createQuery(hql)
.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);