我目前正在将 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);
但是无论我添加什么,它似乎仍然会在重复项上引发错误。