在写到多对多关联查询分页时遇到的问题:
查询满足查询条件的数据的总记录数时,报错:
刚开始想到的hql语句如下:
select count(*) from (select t1 from TProduct t1 left join TAttribute t2 where 1=1 and t1.categoryId=4 and t2.id in (1,3,4,5) group by t1.id) as t
其中,from 里面的语句是可以正确查询出数据的。但是添加count后,报错。然后就修改,改成了下面的语句:
select count(*) from (select t1 from TProduct t1 left join TAttribute t2 where 1=1 and t1.categoryId=4 and t2.id in (1,3,4,5) group by t1.id) as t
这种写法,得到的查询结果是每条数据的记录数,结果为list/数组类型。
最后想是不是group by的问题。group by是我在刚开始写的时候就加上的,根据id进行分组避免查询的结果重复,所以一直也没有往这方面想。然后又百度了一下,查询left join和count的时候,看到了distinct关键字(用于返回唯一不同的值),就又用这个试了一下,是可以的。最终的hql语句:
select count(distinct t1.id) from TProduct t1 left join t1.TAttributes t2 where 1=1 and t1.categoryId=4 and t2.id in (1,3,4,5)