В нашем проекте мы используем две базы данных, одну postgres и одну mssql. Мы используем Jooq для запросов к этим БД, а с postgres все было довольно просто!
Но с mssql мы сталкиваемся с некоторыми проблемами. Задача состоит в том, чтобы выбрать 10 лучших значений, и предположим, что у нас есть следующий код Java:
DSL.using(conn)
.select(USE_CASE.asterisk())
.from(USE_CASE)
.where(USE_CASE.RECORD_ACTIVE.eq(true))
.orderBy(USE_CASE.CREATED_ON.desc())
.limit(10)
.offset(0)
.fetch(new UseCaseMapper()))
Это работает как шарм с postgres, но на mssql мы получаем следующую ошибку:
Execution exception[[CompletionException: org.jooq.exception.DataAccessException:
SQL [select "park"."dbo"."use_case".* from "park"."dbo"."use_case" where
"park"."dbo"."use_case"."record_active" = ?
order by "park"."dbo"."use_case"."created_on" desc limit ?];
Incorrect syntax near 'limit'.]]
Я знаю, что для mssql эквивалентный запрос будет выглядеть примерно так:
select top 10 *
from use_case
where record_active = true
order by created_on desc;
Как я могу изменить свой код Java, чтобы получить записи о лимитах в mssql?