微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何加入 2 个一对多实体 jpql 查询

如何解决如何加入 2 个一对多实体 jpql 查询

产品:id、名称、@manyToOne() categoryId、@manyToOne() BrandId

类别:id、名称、@onetoMany() 产品

品牌:id、名称、@onetoMany() 产品

我有这样的实体。所以我想为产品创建一个 dto。

例如;

productDto:名称,类别名称

所以我可以创建查询 @Query("Select dtoPath.productDto(p.name,c.name) From Category c Inner Join c.products p")

但我想喜欢;

如何添加连接以查询品牌?

解决方法

您可以在 JPQL 中遍历单值关系,JPA 会处理连接:

SELECT dtoPath.productDto(p.name,p.categoryId.name,p.brandId.name)
FROM Product p
WHERE ...

如果您想要所有产品,只需省略 WHERE 子句。如果您想要某个类别中的所有产品,请尝试 WHERE p.categoryId=:category(并传递整个 Category 实体)或 WHERE p.categoryId.id=:categoryId(并仅传递类别 ID)。

(不相关的建议,不要将 Id 附加到关系属性 Product.categoryIdProduct.brandId 的名称)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。