@BasOpers: обратите внимание, что вы также можете предоставить альтернативный ответ на свой вопрос, намекая на то, как вы это сделали. Возможно, это будет полезно для будущего читателя этого вопроса!

вопрос является побочнымЛЮБОЙ оператор с JOOQ а такжеОптимизированы ли массивы в jOOQ и PostgreSQL?.

у меня естьField<T> field а такжеList<T> values и я хочу выразить SQLidentifier = any({... the values ...}), Я пытался сделать:

field.equal(DSL.any(DSL.val(values.stream().toArray())))

(Обратите внимание, что это часть общей реализации, поэтому у меня нет реальных типов на данный момент. У меня есть толькоField<T> а такжеList<T>.)

Но это не работает, так как API принимаетT... вместоObject... а такжеfield.equal(DSL.any(...)) нужно чтоT, Итак, я изменил это на:

field.equal(DSL.any(DSL.val((T[]) values.stream().toArray())))

Однако в комментариях сказано, что я не должен этого делать. Возможно глупый вопрос и Java вместо jOOQ, но как это сделать?

Дополнительный вопрос: разве не стоит просто принятьList<T> в API? Это также может повысить производительность, поскольку мы избегаем ручного создания массива.

Примечание: та же ситуация имеет место дляfield.equal(DSL.any(values.stream().toArray())) а такжеfield.equal(DSL.any(DSL.array(values.stream().toArray()))).

Ответы на вопрос(1)

Ваш ответ на вопрос