Postgresql Postgres/jOOQ替换jsonb[]元素
我有一个带有jOOQ和Postgresql数据库的Spring应用程序,它的表有以下两列问题:Postgresql Postgres/jOOQ替换jsonb[]元素,postgresql,jooq,Postgresql,Jooq,我有一个带有jOOQ和Postgresql数据库的Spring应用程序,它的表有以下两列问题: id (Long) documents (jsonb[]) <- array of jsonb (not jsonb array) 我想要实现的是能够用匹配的id替换文档,通常只有一个id替换为新文档。我正在与jOOQ甚至普通SQL进行斗争 我想我需要在jOOQ中编写一些简单的SQL来实现这一点,但这至少是可以做到的。我有一个想法来做以下工作: 取消显示文档列 筛选出数组中应更新的文档 附加应
id (Long)
documents (jsonb[]) <- array of jsonb (not jsonb array)
我想要实现的是能够用匹配的id替换文档,通常只有一个id替换为新文档。我正在与jOOQ甚至普通SQL进行斗争
我想我需要在jOOQ中编写一些简单的SQL来实现这一点,但这至少是可以做到的。我有一个想法来做以下工作:
取消显示文档列
筛选出数组中应更新的文档
附加应更新的文档
存储整个阵列
原始SQL如下所示,但缺少要添加的新文档:
UPDATE issues SET documents = (SELECT ARRAY_AGG(doc) FROM issues, UNNEST(issues.documents) AS doc WHERE doc->>'id' != 'e4e3422f-83a4-493b-8bf9-37980d532538') WHERE issues.id = 1;
我的最终目标是用jOOQ编写此文档,并附加要替换的文档。我正在使用jOOQ 3.11.4。您应该能够: 更新问题 设置文档= 选择数组| AGGdoc |{id:e4e3422f-83a4-493b-8bf9-37980d532538,名称:n}'::jsonb 从问题、不问题、文档到文档 其中doc->>“id”!='e4e3422f-83a4-493b-8bf9-37980d532538' 其中,issues.id=1
在不久的将来,一些常见的数组函数将添加到jOOQ中,例如,但我怀疑您现在可以离开了?在某种程度上可以正常化吗?也就是说,是否有一个创建表documents\u id uuid、issue\u id bigint、document jsonb表?以这种方式管理您的数据似乎相当容易…不幸的是不是-不会对应用程序的其余部分和项目进度产生太大的影响,但我同意您的看法。。。
UPDATE issues SET documents = (SELECT ARRAY_AGG(doc) FROM issues, UNNEST(issues.documents) AS doc WHERE doc->>'id' != 'e4e3422f-83a4-493b-8bf9-37980d532538') WHERE issues.id = 1;