jOOQ を使用して、特定のリストに存在し、データベース テーブルには存在しない値のリストを見つけようとしています。
たとえば、値1
、2
、がリスト3
に4
存在します。
データベースにはすでに および のエントリが1
あり2
ます。
3
結果を返す jOOQ クエリを探しています4
。
VALUES
これはSQLのとの用語で達成できることを理解してEXCEPT
おり、これらがjOOQに存在することを知っており、これらを複製しようとしていますが、値を使用するためにここで説明されている単純なケースでは静的リストが使用されます(一方、私のものは提供されます)それが原因なのか、それともより一般的な構文なのかはわかりません。except
jOOQ 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 を使用