1

jOOQ を使用して、特定のリストに存在し、データベース テーブルには存在しない値のリストを見つけようとしています。

たとえば、値12、がリスト34存在します。

データベースにはすでに および のエントリが1あり2ます。

3結果を返す jOOQ クエリを探しています4

VALUESこれはSQLのとの用語で達成できることを理解してEXCEPTおり、これらがjOOQに存在することを知っており、これらを複製しようとしていますが、値を使用するためにここで説明されている単純なケースでは静的リストが使用されます(一方、私のものは提供されます)それが原因なのか、それともより一般的な構文なのかはわかりません。exceptjOOQ onlineの良い例は見つかりませんでした。

私が試したこと:

List<String> valuesList
create.select()
    .from(values(getRowsFromList(valuesList)))
    .except(select(TABLE.VALUE).from(TABLE))
    .fetch(TABLE.VALUE)

values は varargRowNオブジェクトを想定しているため、値をそのように変換しています

private RowN[] getRowsFromList(List<String> rows)
{
    return rows.stream().map(DSL::row).toArray(RowN[]::new);
}

エラー:

java.lang.IllegalArgumentException: Field ("public"."table"."value") is not contained in Row ("v"."c1")

Java 11、postgres 11 バックエンド、jooq 3.13.12 を使用

4

1 に答える 1