java - 更新批处理存储 jooq 上唯一约束的记录

标签 java postgresql jooq

我正在尝试使用 jooq 使用 batchStore 插入记录。我需要知道我们如何更新唯一约束的记录,目前它正在抛出 记录已存在的异常

SQL Error [23505]: ERROR: duplicate key value violates unique constraint

下面是代码

DSLContext create = getDSLContext();
List<UserRecord> userRecordList = new ArrayList<>();
for (Users user : model.getUsers()) {
    User record = create.newRecord(user);
    userRecordList.add(record);
}
create.batchStore(userRecordList).execute();

目前它可以很好地插入记录,但是当根据唯一约束发现重复记录时,它应该更新记录

最佳答案

我已经通过使用公共(public)接口(interface) UpdatableRecord 解决了这个问题,首先我使用 fetchOne() 查询根据唯一约束获取记录,该唯一约束将提供 UpdatableRecord,然后使用更新后的值设置值然后添加到 userRecordlist 中,后者将进一步传递到 batchStore

关于java - 更新批处理存储 jooq 上唯一约束的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46211742/

相关文章:

java - 如何在多个参数上动态构建 JDO 查询

java - 从 Python 调用 Java

postgresql - 将查询结果连接到 PostgreSQL 中的变量中

kotlin - 在类jooq中使用主键和引用方法有什么好处

java - 正则表达式匹配 Java 字符串开头的一个单词

java - Rabbit SSL 配置不起作用-{ssl_upgrade_error,{tls_alert ,"certificate unknown"}}

postgresql - Postgres 数据库复制未实时显示

sql - 如何查找一个函数是否存在于 PostgreSQL 中以及存在于何处?

java - 如何制作 jOOQ 配置对象?

mysql - 什么是 Jooq 事务隔离级别?脏读会发生吗?