Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JOOQ处理嵌套列表UPSERT_Java_Sql_Postgresql_Jooq - Fatal编程技术网

Java JOOQ处理嵌套列表UPSERT

Java JOOQ处理嵌套列表UPSERT,java,sql,postgresql,jooq,Java,Sql,Postgresql,Jooq,使用我知道的文档,我可以使用onDuplicateKeyUpdate来处理UPSERT。但是,在插入列表值列表时,如何匹配值?我在这里使用Postgres作为实际的实现 假设下面的Java接受一个嵌套列表,然后启动一个JOOQ查询 List value=List.of(List.of(“1”、“2”、“3”)、List.of(“4”、“5”、“6”); dsl.insertInto(表) .价值观(价值观) .onDuplicateKeyUpdate() 接下来,我必须在fluent调用中调用

使用我知道的文档,我可以使用
onDuplicateKeyUpdate
来处理UPSERT。但是,在插入列表值列表时,如何匹配值?我在这里使用Postgres作为实际的实现

假设下面的Java接受一个嵌套列表,然后启动一个JOOQ查询

List value=List.of(List.of(“1”、“2”、“3”)、List.of(“4”、“5”、“6”);
dsl.insertInto(表)
.价值观(价值观)
.onDuplicateKeyUpdate()
接下来,我必须在fluent调用中调用
set()
。但是,由于这是一个嵌套列表,我无法访问这里的每个项目

例如,假设数据库已包含此行:

| col1 | col2 | col3 |
+------+------+------+
|   1  |   0  |   0  |
+------+------+------+
由于Col1是主键,我希望上面的代码执行UPSERT并尝试插入,但在第一行失败。分别更新
col2
col3
。然后对第二个进行正常插入。成为:

| col1 | col2 | col3 |
+------+------+------+
|   1  |   2  |   3  |
+------+------+------+
|   4  |   5  |   6  |
+------+------+------+
与SQL一样,这将是:

插入到表中(col1、col2、col3)
((1, 2, 3), (4, 5, 6))
关于冲突(col1)
更新集
col1=排除在外。col1,
col2=排除在外。col2,
col3=排除在外。col3

在JOOQ中有没有处理这个问题的好方法?或者我应该使用原始SQL并绑定值吗?

这里有一个关于动态多值插入语句的未决功能请求:


它包括一些变通方法讨论。今天可以做,只是不方便。请注意,如果您只针对PostgreSQL,我建议您使用jOOQ的冲突
支持动态多值插入语句有一个挂起的功能请求:

它包括一些变通方法讨论。今天可以做,只是不方便。请注意,如果您只针对PostgreSQL,我建议您使用jOOQ的冲突
支持