Я пытаюсь написать выражение QueryDSL для выбора значения столбца.Это несколько соединений от таблицы «from»:
a.b.c.get(0).field
, где b
может быть нулевым объектом, но если нет, то в коллекции c
будет не более 1 записи.я хочу что-то вроде
new CaseBuilder()
.when(a.b.isNotNull().and(a.b.c.isNotEmpty()))
.then(a.b.c.get(0).field.stringValue())
.otherwise(Expressions.stringTemplate("''"))
Это неявно создает внутренние объединения с таблицами b
и c
в SQL, а это не то, что я хочу, потому что это не возвращает результатов, когда b
на самом делеnull
.Добавление явных левых внешних объединений в любом случае не останавливает неявные объединения.Я уверен, что не думаю, что это правильно, пожалуйста, помогите мне разобраться: -)