List<MyTable> result = DSL.using(configuration())
.select()
.from(MY_TABLE)
.where(MY_TABLE.ID1.equal(pk_id1))
.and(MY_TABLE.ID2.equal(fk_id2))
.and(MY_TABLE.ID3.equal(fk_id3))
.orderBy(MY_TABLE.ID.asc())
.limit(limit)
.fetchInto(MY_TABLE)
.map(mapper());
Я пытаюсь написать код, который позволит мой запрос взять три опциональные идентификаторы, например, я хотел бы запрос, чтобы в конечном счете бытьКак написать Необязательные где положения в JOOQ
select * from my_table where ID1=5 and ID2=6 and ID3=7 .... etc
Однако Я хотел бы также возможность быть в состоянии исключить любой из идентификаторов
select * from my_table where ID2=6 and ID3=7
или
select * from my_table where ID3=7
Проблема с этим состоит в том, что первый «где» оговорка относится к идентификатору один, а остальные ANDS так, если бы я сделал, если заявление и я извлекал где тогда я бы просто оставил с
List<MyTable> result = DSL.using(configuration())
.select()
.from(MY_TABLE)
.and(MY_TABLE.ID2.equal(fk_id2))
.and(MY_TABLE.ID3.equal(fk_id3))
.orderBy(MY_TABLE.ID.asc())
.limit(limit)
.fetchInto(MY_TABLE)
.map(mapper());
и это не сработает.
Я попытался найти что-то вроде where id = *
, где * is essentianlly нет фильтра, но я не мог найти ничего подобного.
Я пытаюсь его, но по какой-то причине trueCondition всегда оценивает true, поэтому мой запрос просто возвращает все. Есть ли другое условие для использования? –
@LukeXu: Да, это цель trueCondition ... :) вы уверены, что назначаете каждое новое условие обратно переменной? Операция a() создает новое условие. Он не изменяет левую сторону. –
. Ах, хорошо, что имеет смысл, спасибо! –