【发布时间】:2017-02-14 02:39:41
【问题描述】:
我正在编写一个将记录插入或更新到 mysql 表中的方法,并且仅当字段“sample_time”大于表中当前记录的该值时才会更新。以下是我现在想做的事情。
public <R extends Record> void upsertRecord(Table<R> table, R record) {
Connection conn = getConnection();
DSL.using(getConfiguration()).transaction(configuration -> {
try (DSLContext dslContext = DSL.using(configuration)) {
R old = // select with unique keys of table
// something like if (old.get("update_time) < record.get("update_time"))
dslContext.insertInto(table).set(record).onDuplicateKeyUpdate().set(record).execute();
conn.commit();
// }
} catch (SQLException e) {
// TODO
} finally {
closeConnection(conn);
}
});
}
但我不知道如何通过记录的唯一键进行选择,而不考虑确切的字段名称或字段编号。所以我的问题是:
- 如何实现“按记录的唯一键选择而不考虑确切的字段名称或字段编号”
- 否则我如何在 jooq 中使用条件重复更新条件
提前感谢您的帮助!
【问题讨论】:
-
您似乎在 jOOQ 之上实现了“乐观锁定”。你知道这个功能吗? jooq.org/doc/latest/manual/sql-execution/…