java - 使用 jOOQ 更新交叉引用表

标签 java sql jooq

我有表UsersFactors和交叉引用UserFactors

当我在交叉引用表上使用 store() 方法时,在设置两个 id 后,如下所示:

UserFactorsPOJO userFactors = new UserFactorsPOJO();
userFactors.setUserId(userId);
userFactors.setFactorId(FactorId);
userFactors.setValue(value);
UserFactorsRecord userFactRec = create.newRecord(UserFactors.USER_FACTORS, userFactors);
userFactRec.store();

Jooq 尝试插入一条记录,显然是因为我将 id 设置为 POJO 并存储它。我收到“唯一索引或主键违规”错误。

如何使用两个 id 检索我想要的行,然后更新该行?

最佳答案

如果您确实要更新单个 ID 的单个值,则不应使用 jOOQ 的 UpdatableRecord以避免发出两个查询的任务。最简单的解决方案是这样的:

create.update(USER_FACTORS)
      .set(USER_FACTORS.VALUE, value)
      .where(USER_FACTORS.FACTOR_ID.eq(factorId))
      .execute();

请参阅手册中有关 the UPDATE statement 的部分。如果您计划进行更复杂的更新,您还可以尝试使用 jOOQ's MERGE statement support ,尽管在这个例子中,我认为您不需要MERGE

关于java - 使用 jOOQ 更新交叉引用表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20883852/

相关文章:

java - jooq-获取单个值

java - jOOQ 使用Where 子句更新查询

java - 生成格式错误的查询

java google电子表格获取单元格颜色

java - 使用 C/C++ 或 Java 打开现金抽屉

java - IBM Domino 上是否有 Java API 可以加密/解密服务器上的 Notes 项目?

sql - postgresql - 如何在 NOT IN 表达式中返回空值

java - 为什么字符串转换循环似乎有静态开销?

c# - 在 static void 中声明数据库连接 - 连接池会持续存在吗?

sql - 使用sql server management studio向sql表添加列