如何连接2个一对多实体jpql查询



product:id,name,@manyToOne((categoryId,@manyToOne((brandId

类别:id,name,@oneToMany((产品

brand:id,name,@oneToMany((products

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

例如;

productDto:name,categoryName

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

但我想去喜欢;

  • productDto:name,categoryName,brandName

如何添加join以查询品牌?

您可以遍历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的名称中(

最新更新