現在、プロジェクトに Jooq を使用していますが、挿入時に重複キーを無視する方法が必要です。
テーブルに書き込みたいオブジェクトの配列がありますが、それらが既に存在する場合は、START_TS と EVENT_TYPE の複合一意インデックスによって決定され、挿入がサイレントに失敗するようにします。
私のコードは次のようになります。
InsertValuesStep<MyRecord> query = fac.insertInto(MY_REC,
MY_REC.START_TS,
MY_REC.STOP_TS,
MY_REC.EVENT_DATA,
MY_REC.EVENT_TYPE,
MY_REC.PUBLISHED_TS,
MY_REC.MY_ID
);
for(int i=0;i<recs.length;i++)
{
MyClass evt = recs[i];
query.values(
new java.sql.Date(evt.startTS.getTime()),
(evt.stopTS == null) ? null : new java.sql.Date(evt.stopTS.getTime()),
evt.eventData,
evt.type.name(),
date,
id)
}
query.execute();
このようなソリューションが理想的です: https://stackoverflow.com/a/4920619/416338
次のようなものを追加する必要があると思います:
.onDuplicateKeyUpdate().set(MY_REC.EVENT_TYPE,MY_REC.EVENT_TYPE);
しかし、何を追加しても、重複でエラーが発生するようです。