如何去除left join fetch中的多余记录?
Class 和Student 存在一对多关系,如果class表中id为1的记录有1条,student表中对应class id为1的记录有2条,如下执行hql
selectclass from Class as class leftjoin fetch Class.Student where class.Id=1
我们希望得到的是一条class记录,其中包含2条student子记录,但是hql返回的list中却是有2条这样的记录
改变hql
selectdistinc class from Class as class leftjoin fetch Class.Student where class.Id=1
返回的结果还是那样,这里只是在生成sql的时候加上了distinct,
我们可以通过将结果集放到一个set中,利用set的性质来去除多余记录
Set classSet = new LinkedHashSet(list);//这里list是hql返回的结果
list.clear();
list.addAll(classSet);
return list;
本文地址:http://www.45fan.com/a/question/71816.html