我有一个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);

10-06 10:07