mysql 테이블에 레코드를 삽입하거나 업데이트하는 메소드를 작성하고 있는데 "sample_time"필드가 이 테이블의 현재 레코드 값. 다음은 지금 어떻게하고 싶은가입니다.jooq mysql은 필드 이름과 관계없이 <R extends Record> 고유 키를 사용합니다.
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의 상단에 "낙관적 잠금"을 구현하는 것 같다. 이 기능을 알고 있습니까? https://www.jooq.org/doc/latest/manual/sql-execution/crud-with-updatablerecords/optimistic-locking –