【发布时间】:2023-03-15 11:38:01
【问题描述】:
我使用 PostgreSQL,并且我有这些表,product 和 product_media 与 product_media 上的关系 OneToMany。我想检索一个包含产品的列表,其中每个产品都包含一个 product_media 列表。 为了从数据库中检索它们,我有两个选择。
第一个解决方案是首先检索产品列表,然后迭代检索到的列表并执行查询以检索产品媒体列表。
查询1:
select * from product as p where p.status=1;
检索列表,然后迭代此列表并执行此查询:
select * from product_media as pm where pm.product_id=?
其次是实现查询中的联接并从我的数据库中检索所有数据。 查询:
select * from product as p Join product_media as pm on (p.id=pm.product_id)
检索包含所有数据的复杂列表。 第二个选项的问题是不知道将这个列表映射到具有以下格式的对象的优雅方法。你知道如何将结果自动映射成这种格式吗?
product:[
{
id:1,
name:'Pro1',
medias:[
{
id:1,
uuid:'asdfi-asdf-rg-fgsdf-do'
},
{
id:2,
uuid:'asdfi-asdf-rg-fgsdf-do'
}
]
},
{
id:2,
name:'Pro2',
medias:[
{
id:5,
uuid:'asdfi-asdf-rg-fgsdf-do'
},
{
id:7,
uuid:'asdfi-asdf-rg-fgsdf-do'
}
]
}
]
【问题讨论】:
-
您正在使用 JPA,因此您应该简单地拥有一个 OneToMany 关联,并使用一个 JPQL(不是 SQL)查询和一个连接提取。docs.jboss.org/hibernate/orm/5.1/userguide/html_single/…跨度>
-
如果你打算使用 JPA,那么你应该……嗯……你应该使用 JPA。你在哪里说你想要 JSON 在哪里?
-
从发布的回复中我可以看到你有多对多的关系
标签: java spring postgresql jpa