首页 > 解决方案 > SQL 或 Spring JDBC 返回对象的对象

问题描述

postgres-sql 或 Spring JDBC 是否可以返回具有以下形状的数据:

    {
      id: 1
      profit: 200
      sales_rep: {
        name: 'bob',
        age: 9,
        gender: male
    }

在到达存储库层之前,名称、年龄和性别在键“sales_rep”中的位置?或者我是否必须检索平面数据,然后使用 java 将其放入存储库层中我想要的形状。

请假设我们使用两个表 'earnings' 和 'sales_rep' 外键为 'sales_rep_id' 以便于论证。

标签: javapostgresqlspring-jdbc

解决方案


在 Postgres SQL 中,您可以使用 json 函数轻松完成此操作:

select jsonb_build_object(
    'id',        e.id,
    'profit',    e.profit
    'sales_rep', jsonb_build_object(
        'name',   sr.name,
        'age',    sr.age,
        'gender', sr.gender
    )
) js
from earnings e
inner join sales_rep sr on sr.sales_rep_id = e.sales_rep_id

这为您提供了一个每行earning和一个列的结果集,其中包含具有您要求的结构的 jsonb 有效负载。


推荐阅读