Собственная сортировка запросов Spring jpa с добавлением префикса к порядку по имени поля - PullRequest
0 голосов
/ 22 мая 2018

У меня проблема с сортировкой.

Метод репозитория:

@Query(nativeQuery = true,
    value = "SELECT D.ID as dealerId , D.NAME as dealerName, K.ID as kpiId, " +
    "K.NAME as kpiName FROM REGION R, DEALER D, KPI K "
    + "WHERE R.IMPORTER_ID = :importerId "
    + "AND D.REGION_ID = R.ID "
    + "AND K.IMPORTER_ID = :importerId ")

Page<DealersKpiTargets> getDealersKpiTargets(@Param("importerId") Long importerId, Pageable pageable);

Доступный для просмотра объект:

Page request [number: 0, size 20, sort: name: DESC]

Журнал гибернации:

Hibernate: SELECT D.ID as dealerId , D.NAME as dealerName, K.ID as kpiId, K.NAME as kpiName FROM REGION R, DEALER D, KPI K WHERE R.IMPORTER_ID = ? AND D.REGION_ID = R.ID AND K.IMPORTER_ID = ?  order by R.name desc limit ?

Я не понимаю, откуда взялся префикс R.name, в части order by в Hibernate (ближе к концу).

Для справки я использую:

spring-data-jpa версия 2.0.7.RELEASE

spring-boot-starter-data-jpa версия 2.0.2.RELEASE

ОБНОВЛЕНИЕ

Я решил эту проблему, изменив запрос с собственного запроса на запрос jpa, и он работает.И я изменил декартово, чтобы присоединиться к версии.

        @Query("SELECT dealerEntity.id AS dealerId , dealerEntity.name AS dealerName, kpiEntity.id AS kpiId, " +
        "kpiEntity.name AS kpiName FROM KpiEntity kpiEntity "
        + "JOIN RegionEntity regionEntity ON regionEntity.importerEntity = kpiEntity.importerEntity "
        + "JOIN DealerEntity dealerEntity ON dealerEntity.importerEntity = regionEntity.importerEntity "
        + "WHERE kpiEntity.importerEntity = :importerEntity ")
Page<DealersKpiTargets> getDealersKpiTargets(@Param("importerEntity") ImporterEntity importerEntity, Pageable pageable);

1 Ответ

0 голосов
/ 22 мая 2018

У него есть класс Sort, для этого вы можете использовать это, может быть.Кроме того, он прост в использовании.

https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods.sorting

...