Я пытаюсь написать динамический запрос, который использует метод seek
. Мое использование addSeekAfter
в качестве замены для seek
имеет недостатки. Как это исправить?JOOQ: невозможно реализовать поиск в динамическом запросе
// my current setup
create.select(TOPIC.ID, TOPIC.DESCRIPTION)
.from(TOPIC)
.orderBy(TOPIC.MODIFIED_ON.desc(), TOPIC.ID.desc())
.seek(recModifiedOn, ULong.valueOf(recentTopicId))
.limit(noOfRecords)
.fetch()
.map(new TopicRecordMapper());
// what I want to move to
SelectQuery query = create.selectQuery();
query.addSelect(TOPIC.ID, TOPIC.DESCRIPTION);
query.addFrom(TOPIC);
query.addOrderBy(TOPIC.MODIFIED_ON.desc(), TOPIC.ID.desc());
// below addSeekAfter is not yielding identical results as above
query.addSeekAfter(
DSL.field(TOPIC.MODIFIED_ON.le(TimeUtils.getTime(recentModifiedOn))),
DSL.field(TOPIC.ID.le(ULong.valueOf(recentTopicId))));
query.addLimit(noOfRecords);
query.fetch().map(new TopicRecordMapper());
Хотя это будет работать, это, безусловно, не нужно делать так. Обертка ваших значений привязки в псевдофункциях кажется немного похожей на излишнюю. С jOOQ обычно есть более простой способ :) –
:) Спасибо. Я должен прочитать о переменных привязки – user2067095