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: неправильный синтаксис рядом с «смещением».)
Кто-то знает причину? Я не могу использовать сортировку и нумерацию страниц вместе?