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.categoryId
和Product.brandId
的名称中(