我有一个带有jOOQ和Postgresql数据库的Spring应用程序,它有一个包含以下两列的表(问题):
id (Long)
documents (jsonb[]) <- array of jsonb (not jsonb array)
文档json结构采用以下格式:
{
"id": (UUID),
"name": (String),
"owner"; (String)
}
我想实现的是能够用一个新文档替换具有匹配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。
您应该能够在PostgreSQL中连接数组:
UPDATE issues
SET documents = (
SELECT ARRAY_AGG(doc) || '{"id":"e4e3422f-83a4-493b-8bf9-37980d532538","name":"n"}'::jsonb
FROM issues, UNNEST(issues.documents) AS doc
WHERE doc->>'id' != 'e4e3422f-83a4-493b-8bf9-37980d532538'
)
WHERE issues.id = 1
一些常见的数组函数将在不久的将来添加到jOOQ中,例如数组连接,但我怀疑您现在可以使用普通的SQL模板吗?
这相当于在Postgres中测试包含条件。但是我需要做exists条件。我如何在Jooq中表达这一点?
我正试图从JSONB转换为Google GSON JSONElement。我使用的转换器来自:https://www.jooq.org/doc/3.11/manual/code-generation/custom-data-type-bindings/ TableImpl中的列:
我对postgresql(9.4)和javascript有一些问题。我试图将jsonb[]数据类型转换为javascript中json值的数组/列表。为了简单起见,我的示例在数组中只包含一个元素(json)。 以下是我迄今为止尝试过的。 这是我要找的。 任何帮助将不胜感激。
我有下面的Postgres查询,当通过psql客户端运行时可以很好地工作- 然而,当我通过创建org.hibernate.query对象来运行查询时,我得到了一个类似于这样的异常- psqlexception:错误:运算符不存在:jsonb@>字符变化提示:没有与给定名称和参数类型匹配的运算符。您可能需要添加显式类型转换。职位:144 请帮帮忙。我读了以下关于创建一个新类型的帖子,并且Hibern
我正在阅读Postgres Jsonb文档,但找不到解决我遇到的一个小问题的方法。 我有一张桌子:MY_TABLE 具有以下列: 用户、名称、数据和购买 需要注意的是,“数据”是一个jsonb,有多个字段。“Data”中的一个字段是“Attribute”,但它可以保存的值不同步。我的意思是,它可以是一个字符串,一个字符串列表,一个空列表,或者只是一个空字符串。然而,我想改变这一点。 我希望允许的唯
我正在调查Jooq,发现了一些我几乎找不到文档的东西——没有一个能完全诚实地回答我的问题。 我想做的是在表中有一列,比如permissions Variable bit(2000)(Postgres 9.5) 然而,Jooq对此所做的是将其视为varchar...这显然是不正确的,即使在一代。在这样的事情上,成功的捷径是什么?