我使用PostgreSQL,我有这些表,地址和公司与一家公司的关系。我想检索一个地址列表,每个地址都包含一个公司列表。我实现了这两个表之间的连接,并检索了以下数据:
执行此查询时:

select ad.id,ad.geolocation, ca.id, ca.name_en, ca.name_el from
address as ad right join company_address as ca on (ad.id = ca.address_id);

我检索了此表,并希望将其映射为JSON格式,如下所示:
1;"0101000020E6100000C006335CD3043840504BBDB89EC14140";  6; "Petros";
1;"0101000020E6100000C006335CD3043840504BBDB89EC14140"; 12; "Shop3";
1;"0101000020E6100000C006335CD3043840504BBDB89EC14140"; 13; "Shop3";
7;"0101000020E6100000A03418D984063840D8DD978E94C14140";  7; "Mike";
7;"0101000020E6100000A03418D984063840D8DD978E94C14140"; 14; "Shop5";
7;"0101000020E6100000A03418D984063840D8DD978E94C14140"; 15; "Shiop8";
9;"0101000020E6100000804127840E163840CC28965B5AC64140"; 10; "Shop2";
9;"0101000020E6100000804127840E163840CC28965B5AC64140"; 11; "Shop3";

你知道如何用一种优雅的方式把结果转换成下面的格式吗?
波乔:
private Long id;
private Geolocation geolocation;
private List<ShopObj> shops;

ShopObj类:
class ShopObj{
  private Long id;
  private String nameEn;
}

Json数据:
{
  "code": "200",
    "data": [
       {
        "id": 1,
        "geolocation": "0101000020E6100000C006335CD3043840504BBDB89EC14140",
        "shops": [
          {
           "id": 6,
            "nameEn": "Petros"
          },
          {
            "id": 12,
            "nameEn": "Shop3"
          },
          {
            "id": 13,
            "nameEn": "Shop3"
          }
        ]
      },
      {
        "id": 7,
        "geolocation": "0101000020E6100000A03418D984063840D8DD978E94C14140",
        "shops": [
          {
            "id": 7,
            "nameEn": "Mike"
          },
          {
            "id": 14,
            "nameEn": "Shop5"
          },
          {
            "id": 15,
            "nameEn": "Shiop8"
          }
        ]
      },
      {
        "id": 9,
        "geolocation": "0101000020E6100000804127840E163840CC28965B5AC64140",
        "shops": [
          {
            "id": 10,
            "nameEn": "Shop2"
          },
          {
            "id": 11,
            "nameEn": "Shop3"
          }
        ]
      }
   ]
}

最佳答案

当然。
创建一个空的Map<Long, POJO>,将pojo作为值,将其ID作为键
遍历行。
对于每一行,获取POJO ID,并从映射中获取相应的POJO。如果还不在映射中,则创建POJO并将其添加到映射中
为当前行创建一个商店,并将该商店添加到在上一步获得/创建的pojo的商店列表中
最后,映射的values()是要序列化为JSON的Collection<POJO>

关于java - OneToMany将POJO映射到JSON Spring,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37897784/

10-13 02:22