Quarkus Panache Orm на SQL Server: ошибка при сортировке и разбиении на страницы

Я использую Quarkus 2.11.1.Final с Panache Orm в базе данных SQL Server. У меня есть простая таблица данных GPS (GpsEsiti), и у меня есть простой метод для класса относительного репозитория.

      // Repository class
@ApplicationScoped
public class GpsEsitiRepository implements PanacheRepository<GpsEsiti> {

    public PanacheQuery<GpsEsiti> getNextGpsEsiti(BigDecimal start) {
        Map<String, Object> params = new HashMap<>();
        params.put("start", start);
        return find("gpsLatitude > :start", params);
    }

}

// method that use repository
        try {
            list = gpsEsitiRepository.getNextGpsEsiti(start).page(Page.of(0, Costanti.MAX_ROWS))
                    .list();
            // do something ...
        } catch (Exception ex) {
            // do something ...
        }

если я напечатаю команду sql, я нашел:

      Hibernate: 
    select
        top(?) gpsesiti0_.Gps_Esiti_Id as gps_esit1_1_,
        gpsesiti0_.Autista as autista2_1_,
        gpsesiti0_.CaricatoSuGateHouse as caricato3_1_,
        gpsesiti0_.ChiaveInserita as chiavein4_1_,
        gpsesiti0_.CreataIl as creatail5_1_,
        gpsesiti0_.EntratoInLuogo as entratoi6_1_,
        gpsesiti0_.Errore as errore7_1_,
        gpsesiti0_.google as google8_1_,
        gpsesiti0_.GpsDirection as gpsdirec9_1_,
        gpsesiti0_.Gps_FornitoreId as gps_for10_1_,
        gpsesiti0_.Gps_FornitoreTrackingId as gps_for11_1_,
        gpsesiti0_.Gps_LastDataStessoLuogo as gps_las12_1_,
        gpsesiti0_.GpsLatitude as gpslati13_1_,
        gpsesiti0_.GpsLongitude as gpslong14_1_,
        gpsesiti0_.GpsSpeedKmOra as gpsspee15_1_,
        gpsesiti0_.Gps_UTC_TimeStamp as gps_utc16_1_,
        gpsesiti0_.InLuogoId as inluogo17_1_,
        gpsesiti0_.KmTotali as kmtotal18_1_,
        gpsesiti0_.KmTotaliCalcolati as kmtotal19_1_,
        gpsesiti0_.Ntratta as ntratta20_1_,
        gpsesiti0_.ReverseGeocoding as reverse21_1_,
        gpsesiti0_.Targa as targa22_1_,
        gpsesiti0_.Telefono as telefon23_1_,
        gpsesiti0_.UscitoDaLuogo as uscitod24_1_,
        gpsesiti0_.VRID as vrid25_1_ 
    from
        GPSDB.dbo.Gps_Esiti gpsesiti0_ 
    where
        gpsesiti0_.GpsLatitude>?

Если я изменю метод в репозитории, добавив сортировку

          public PanacheQuery<GpsEsiti> getNextGpsEsiti(BigDecimal start) {
        Map<String, Object> params = new HashMap<>();
        params.put("start", start);
        return find("gpsLatitude > :start", Sort.by("gpsEsitiId"), params);
    }

сгенерированный запрос:

      Hibernate: 
    select
        gpsesiti0_.Gps_Esiti_Id as gps_esit1_1_,
        gpsesiti0_.Autista as autista2_1_,
        gpsesiti0_.CaricatoSuGateHouse as caricato3_1_,
        gpsesiti0_.ChiaveInserita as chiavein4_1_,
        gpsesiti0_.CreataIl as creatail5_1_,
        gpsesiti0_.EntratoInLuogo as entratoi6_1_,
        gpsesiti0_.Errore as errore7_1_,
        gpsesiti0_.google as google8_1_,
        gpsesiti0_.GpsDirection as gpsdirec9_1_,
        gpsesiti0_.Gps_FornitoreId as gps_for10_1_,
        gpsesiti0_.Gps_FornitoreTrackingId as gps_for11_1_,
        gpsesiti0_.Gps_LastDataStessoLuogo as gps_las12_1_,
        gpsesiti0_.GpsLatitude as gpslati13_1_,
        gpsesiti0_.GpsLongitude as gpslong14_1_,
        gpsesiti0_.GpsSpeedKmOra as gpsspee15_1_,
        gpsesiti0_.Gps_UTC_TimeStamp as gps_utc16_1_,
        gpsesiti0_.InLuogoId as inluogo17_1_,
        gpsesiti0_.KmTotali as kmtotal18_1_,
        gpsesiti0_.KmTotaliCalcolati as kmtotal19_1_,
        gpsesiti0_.Ntratta as ntratta20_1_,
        gpsesiti0_.ReverseGeocoding as reverse21_1_,
        gpsesiti0_.Targa as targa22_1_,
        gpsesiti0_.Telefono as telefon23_1_,
        gpsesiti0_.UscitoDaLuogo as uscitod24_1_,
        gpsesiti0_.VRID as vrid25_1_ 
    from
        GPSDB.dbo.Gps_Esiti gpsesiti0_ 
    where
        gpsesiti0_.GpsLatitude>? 
    order by
        gpsesiti0_.Gps_Esiti_Id offset 0 rows fetch next ? rows only

который синтаксически неверен в базе данных SQL Server, и метод возвращает ошибку (вызвано: com.microsoft.sqlserver.jdbc.SQLServerException: неправильный синтаксис рядом с «смещением».)

Кто-то знает причину? Я не могу использовать сортировку и нумерацию страниц вместе?

0 ответов

Другие вопросы по тегам