我正在使用 java spring boot 的后端分页和排序pageable。在将排序字段作为usercount(这给出计数user_role_mapping)传递时,Java 触发错误列 f.usercount 不存在。实际上usercount不是一个列,它是一个别名。
如何使用usercount作为不带f 的别名名称进行排序。作为前缀?
接口网址:
http://localhost:8080/facility/list?pageNumber=0&pageSize=10&sortBy=usercount&sortType=asc
默认的 sortBy & sortType在控制器层分别是id和desc 。
Java代码如下:
Pageable pageable = PageRequest.of(pageNumber, pageSize, Sort.by(sortBy).descending());
if (sortType.equalsIgnoreCase("asc")) {
pageable = PageRequest.of(pageNumber, pageSize, Sort.by(sortBy).ascending());
}
Page<FacilityProjection> facilityList = facilityRepository.facilityListing(12,pageable);
Postgres sql Hibernate 查询列出设施详细信息以及基于角色 ID 的用户计数,如下所示:
@Query(nativeQuery = true, value = " Select f.name as facilityname,f.id as facilityid,count(urm.id) as usercount
from facility f
join user u on f.user_id=u.id
join user_role_mapping urm on u.id = urm.user_id
where urm.role_id=:roleId ")
Page<FacilityProjection> facilityListing(@Param("roleId") Long roleId,Pageable pageable);