Estoy evaluando el uso de JOOQ en nuestra solución, donde exponemos los datos mediante la API REST y verificamos si la siguiente característica puede usar la API seekAfter y seekBefore de jooq.
supongamos que tengo una mesa como
CREATE TABLE Test ( Id Int NOT NULL PRIMARY KEY, Sid varchar(34) NOT NULL, .... )Queremos hacer paginación usando el campo Id, pero no queremos exponerlo al usuario. Distribuimos los argumentos de paginación siguiente y anterior como tokens como parte de la respuesta.
actualmente estamos construyendo una consulta como
SELECT ... FROM Test WHERE Id > (SELECT Id FROM Test WHERE Sid=?) LIMIT 10;¿Es posible darle una expresión a la API de búsqueda de jooq en lugar de valores literales?
Podrías hacer algo similar a esto:
// Assuming this static import: import static org.jooq.impl.DSL.*; DSL.using(configuration) .select() .from(TEST) .orderBy(TEST.ID) .seekAfter(field(select(TEST.ID).from(TEST).where(TEST.SID.eq(sid)))) .limit(10) .fetch(); Esencialmente, esto es envolver un Select<? extends Record1<T>> en un tipo Field<T> con DSL.field(Select)