SQL поддержка переменных в jOOQ
В настоящее время jOOQ (версия 3.13) не поддерживает переменные сеанса, подобные тем, которые вы показали. Для этого есть ожидающий запрос функции: https://github.com/jOOQ/jOOQ/issues/2558
Если jOOQ не поддерживает функцию c, указанную поставщиком, вы можете использовать ее с помощью шаблонов plain SQL вместо этого. Напишите:
ctx
.select(
field("(@cnt := @cnt + 1)", SQLDataType.BIGINT).as("rowNumber"),
TABLE.ID)
.from(TABLE)
.crossJoin(table(select(field("@cnt := 0", SQLDataType.BIGINT))).as("n"))
.where(...)
.orderBy(TABLE.ID)
.limit(10)
.fetch();
Предполагая, как всегда, эту статистику c import:
import static org.jooq.impl.DSL.*;
Начиная с MySQL 8
Просто примечание для будущие посетители, которые могут использовать MySQL 8: в этих случаях вы будете использовать оконную функцию DSL.rowNumber()
вместо подхода с использованием переменных