У меня есть оператор вставки, который вставляет некоторые константные значения, и ему нужно выбрать некоторые ссылочные ключи из других таблиц при поиске. Запрос выглядит примерно так:
Insert into repository.buffer (
b_external_id,
b_buffer_type_id,
b_entrypoints,
b_site_id,
b_state,
b_uri)
select '100A',bt_id,'["/locations/100A"]'::jsonb,s_id,'ready','/buffers/100A'
from repository.site, repository.buffer_type
where s_name = 'bar'
and bt_external_id = 'FOO';
Мой код JOOQ Query Builder выглядит следующим образом
dslContext
.insertInto(
table("repository.buffer"),
field("b_external_id"),
field("b_buffer_type_id"),
field("b_entrypoints"),
field("b_site_id"),
field("b_state"),
field("b_uri"))
.select(select(
inline(null, String.class),
field("bt_id"),
inline(null, Object.class),
field("s_id"),
inline(null, String.class),
inline(null, String.class))
.from(table("repository.site"), table("repository.buffer_type"))
.where(field("s_name").eq(cast(null, String.class)))
.and(field("bt_external_id").eq(cast(null, Integer.class))))
.onConflict().doNothing()
.getSQL();
Этот оператор не компилируется со следующей ошибкой
Error:(98, 25) java: incompatible types: org.jooq.SelectConditionStep<org.jooq.Record6<java.lang.String,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.String,java.lang.String>> cannot be converted to org.jooq.Select<? extends org.jooq.Record6<java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object>>
Каким-то образом, как только я использую inline в возвращаемом типе select, select меняет SelectConditionStep вместо Select.
Любой ключ, чтобы решить эту проблему?