У меня есть требование, где мне нужно получить записи, основанные на объединении трех таблиц с нумерацией страниц (также есть требование добавления). Поэтому я написал nativeQuery для получения записей. Ниже приведен пример запроса
@Query(value = "SELECT "
+ "a.GROUP_REF_ID as refId "
+ "count(case when c.STAT_CD in :userStatus then (c.grp_user_id) end) as numberOfUsers, "
+ "count(case when b.STAT_CD in :itemStatus then (b.grp_item_id) end) as numberOfItems "
+ "from grp a left join grp_item b on a.grp_id=b.grp_id left join grp_user c on a.grp_id=c.grp_id "
+ "where a.stat_cd in :status and a.co_id in :cids "
+ "group by a.GROUP_REF_ID,a.grp_nam,a.GRP_DESC,a.co_id,a.co_nam,a.CRTE_BY, "
+ "a.CRTE_DT,a.UPDT_BY,a.UPDT_DT ", countQuery = "select count(*) from grp where stat_cd in :status and co_id in :cids ", nativeQuery = true)
public Page<Object> findByStatusAndCompanyIdIn(@Param("status") String status, @Param("cids") List<Long> companyIds,
@Param("userStatus") List<GroupUserStatus> userStatus,
@Param("itemStatus") List<GroupItemStatus> itemStatus, Pageable pageable);
Теперь необходимо также, чтобы эти записи были отсортированы по любому столбцу в выбранной части. Таким образом, если пользователь передает numberOfItems
, записи должны быть отсортированы по нему. Но здесь я сталкиваюсь с проблемой, потому что, если я передам Sort
параметр как numberOfItems
, пружине будет предшествовать a.
перед numberOfItems
, что приведет к ошибке, что not able to find a.numberOfItems
.
Есть ли способ, которым яможет остановить Spring от добавления псевдонима таблицы при создании запроса с Sort
, или я должен написать свою логику в другом подходе