我有表Users
、Factors
和交叉引用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/