Java 如何连接2个一对多实体jpql查询
产品:id、名称、@manyToOne()类别id、@manyToOne()品牌id 类别:id、名称、@oneToMany()产品 品牌:id、名称、@oneToMany()产品 我有这样的实体。所以我想为产品创建一个dto 比如, productDto:名称,类别名称 因此,我可以创建queryJava 如何连接2个一对多实体jpql查询,java,spring-boot,jpa,jpql,Java,Spring Boot,Jpa,Jpql,产品:id、名称、@manyToOne()类别id、@manyToOne()品牌id 类别:id、名称、@oneToMany()产品 品牌:id、名称、@oneToMany()产品 我有这样的实体。所以我想为产品创建一个dto 比如, productDto:名称,类别名称 因此,我可以创建query@query(“从类别c内部连接c.products p中选择dtoPath.productDto(p.name,c.name)) 但我想去喜欢 产品编号:名称、类别名称、品牌名称 如何将连接添加
@query(“从类别c内部连接c.products p中选择dtoPath.productDto(p.name,c.name))
但我想去喜欢
- 产品编号:名称、类别名称、品牌名称
如何将连接添加到品牌查询?您可以在JPQL中遍历单值关系,JPA将负责连接:
SELECT dtoPath.productDto(p.name, p.categoryId.name, p.brandId.name)
FROM Product p
WHERE ...
如果您想要所有产品,只需省略WHERE
子句即可。如果您想要某个类别中的所有产品,请尝试其中p.categoryId=:category
(并传递整个类别
实体)或其中p.categoryId.id=:categoryId
(仅传递类别id)
(无关建议,请勿将Id
附加到关系属性Product.categoryId
和Product.brandId
的名称后)