当前位置: 首页 > 知识库问答 >
问题:

jOOQ&PostgreSQL:将从复杂jsonb中提取的嵌套json对象映射到自定义类型

沈皓君
2023-03-14

现在我确实有了一个稍微复杂一点的用例:我有一个查询,它将json对象的一部分提取到我的记录的一个字段中(在select子句中使用JSONB_Column::JSONB->>>NestedObject运算符)。

我希望将该记录映射到一个pojo,以便记录的所有字段都映射到pojo的字段(使用@column注释),并且应该将特定的json嵌套对象映射到特定的Java对象。

实现这一目标的正确方法是什么?

共有1个答案

席兴朝
2023-03-14

您将需要两个部分来实现这一点

这可以使用如下代码实现:

DataType<NestedType> myType = SQLDataType.OTHER.asConvertedDataType(new YourBinding());

哪里

class YourBinding implements Binding<Object, NestedType> { ... }
DataType<NestedType> myType = SQLDataType.JSONB.asConvertedDataType(new YourBinding());
class YourBinding implements Binding<JSONB, NestedType> { ... }
Field<NestedType> field = DSL.field("jsonb_column::jsonb ->> nestedObject", myType);
 类似资料:
  • 我正在使用PostgreSQL 9.5和jOOQ 3.8.4进行一些测试。 具体来说,我想创建一个如下的域名: 然后我想创建一个类型,如下所示: 最后,我有一个表,其中的类型作为字段,例如: 我看到jOOQ 3.8.4将字段映射为(在表记录和POJO中都有)。我期待的是,因为域使用的是。 我错了吗?如果没有,有没有办法克服这个问题? 也许我可以使用和来注册转换器,但我不确定它是否适用于用户定义的类

  • POJO类: 控制器: JSON请求: 问题: 当我处理请求时,我收到一个空的TransactionDto对象。 System.out.println(transactionDto) TransactionDto(id=null,userName=null,apiKey=null,amount=0,accountNumber=null,expirationDate=null,cscCode=nul

  • 假设我有包含以下字段的传入对象: 还有更多的字段可以转换为我的DTO: ,但我想以自定义的方式映射这两个: 这意味着我只需要编写一个方法来将的几个字段转换为嵌套的DTO对象。我该怎么做呢? Upd:我不介意只将转换后的参数传递给方法: 那就更好了。

  • 我有一个像这样的json,它嵌套在其中一个字段中- 我创建了一个自定义类, 在我的服务类中,我正在读取json并将其映射到我的EmailTemplate类中,但是映射失败了。这里有什么可以用的? 例外情况: 我试着添加 但这也不起作用。

  • 我想映射这个JSON数据: 对于此java对象: 但是它失败了,所有的值都是。我尝试在变量上方添加,但没有成功。 是否可以反序列化JSON,使其仅映射到(这个)一个类? 编辑:我使用Spring StreamListener进行如下映射:

  • 问题内容: 我正在尝试将JSON文件映射到类对象,然后根据新接收的JSON更新卡。 我的JSON结构是这样的 我的班级看起来像这样: 如何将JSON文件中的值映射到CardInfo类创建的对象的字段中? 更新资料 以下试用版在 ci.description上 打印为null ,是否表示从未创建该对象? 更新2 打印cardInfo给出以下内容: {$ class:FirstCard,id:1,说明