Java 使用JOOQ执行删除操作,在“删除”中指定多个列;不在「;条款

Java 使用JOOQ执行删除操作,在“删除”中指定多个列;不在「;条款,java,sql,postgresql,jooq,Java,Sql,Postgresql,Jooq,我想将postgres数据库表与Jooq记录列表同步 我有一个表,每行有一个复合主键和三个其他值 table(k1, k2, v1, v2, v3) 例如,数据可能是 Last, First, Age, Weight, Height Smith, Joe, 21, 75, 160 Jones, Pete, 23, 80, 180 (请原谅使用名称作为主键的糟糕形式……) 在java代码中,我还有一个该表的Jooq记录列表。假设有两条java记录 [ <Smi

我想将postgres数据库表与Jooq记录列表同步

我有一个表,每行有一个复合主键和三个其他值

table(k1, k2, v1, v2, v3)
例如,数据可能是

Last, First, Age, Weight, Height
Smith, Joe,  21,  75,     160
Jones, Pete, 23,  80,     180
(请原谅使用名称作为主键的糟糕形式……)

在java代码中,我还有一个该表的Jooq记录列表。假设有两条java记录

[
   <Smith, Joe, 21, 75, 180>,
   <Taylor, Mark, 54, 90, 170> 
]
但是我无法计算出相应的Java代码来实现它

有没有Jooq大师在读这篇文章


有什么明显的东西我看过头了吗?

就像你说的那样,删除主键比较容易,这是一个很好的做法。只要没有两个叫皮特·琼斯的人,像这样的事情就行了:

dsl.deleteFrom(MY_TABLE)
 .where(MY_TABLE.first.eq("pete").and(MY_TABLE.last.eq("jones")).execute();

您的查询可以转换为以下jOOQ代码:

//假设:
导入静态org.jooq.impl.DSL.*;
使用(配置)
.deleteFrom(我的表格)
.where(行(MY_TABLE.FIRST,MY_TABLE.LAST)。不在(
世界其他地区(“乔”、“史密斯”),
行(“马克”、“泰勒”)
))
.execute();
这用于构造行值表达式。请注意,
是PostgreSQL中的可选关键字。您只是碰巧在SQL示例中省略了它

另请参见手册中关于度数>1的谓词中的
部分:


再次感谢卢卡斯!
dsl.deleteFrom(MY_TABLE)
 .where(MY_TABLE.first.eq("pete").and(MY_TABLE.last.eq("jones")).execute();