Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何连接2个一对多实体jpql查询_Java_Spring Boot_Jpa_Jpql - Fatal编程技术网

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

Java 如何连接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)) 但我想去喜欢 产品编号:名称、类别名称、品牌名称 如何将连接添加

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

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

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

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

比如,

productDto:名称,类别名称

因此,我可以创建query
@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
的名称后)