Sql 使用单个查询统计类别

Sql 使用单个查询统计类别,sql,spring,spring-data-jpa,spring-data,Sql,Spring,Spring Data Jpa,Spring Data,我想创建一个Spring数据jpa请求,该请求从REST API返回以下结果: [ {category: “Laptop”, productsAvailable: 2}, {category: pc, productsAvailable: 1}] 身份证件 类别 日期 1. 笔记本电脑 2. 个人计算机 3. 笔记本电脑 JPA规范允许我们以面向对象的方式自定义结果。您可以使用JPQL构造函数表达式来设置结果: 公共接口ProductRepository扩展了JpaRepository{ @查

我想创建一个Spring数据jpa请求,该请求从REST API返回以下结果:

[ {category: “Laptop”, productsAvailable: 2}, {category: pc,
productsAvailable: 1}]
身份证件 类别 日期 1. 笔记本电脑 2. 个人计算机 3. 笔记本电脑
JPA规范允许我们以面向对象的方式自定义结果。您可以使用JPQL构造函数表达式来设置结果:

公共接口ProductRepository扩展了JpaRepository{
@查询(“选择new com.stackoverflow.TotalProductDTO(p.category,COUNT(p.category)),从产品中按p.category分组”)
列出countTotalProductsByCategory();
}
这将
SELECT
语句的输出绑定到
POJO
。指定的类需要具有与投影属性完全匹配的构造函数:

公共类TotalProductDTO{
私有字符串类别;
私人长期产品可用;
公共TotalProductDTO(字符串类别,长productsAvailable){
this.category=类别;
this.productsavaailable=productsavaailable;
}
公共字符串getCategory(){
退货类别;
}
公共无效集合类别(字符串类别){
this.category=类别;
}
公共长getProductsAvailable(){
返回产品可用;
}
public void setProductsAvailable(长productsAvailable){
this.productsavaailable=productsavaailable;
}
}
您可以使用下面的方法查看所需的Json输出

@RestController
公共类产品控制器{
私有最终产品存储库产品存储库;
公共产品控制器(ProductRepository ProductRepository){
this.productRepository=productRepository;
}
@GetMapping(值={“/availableProducts”})
公共响应可用产品数量(){
List totalProducts=productRepository.countTotalProductsByCategory();
返回响应正确(totalProducts);
}
}
因此,您将获得以下json:

[
{
“类别”:“笔记本电脑”,
“产品可用”:2
},
{
“类别”:“pc”,
“productsAvailable”:1
}
]

JPA规范允许我们以面向对象的方式自定义结果。您可以使用JPQL构造函数表达式设置结果:

公共接口ProductRepository扩展了JpaRepository{
@查询(“选择new com.stackoverflow.TotalProductDTO(p.category,COUNT(p.category)),从产品中按p.category分组”)
列出countTotalProductsByCategory();
}
这将
SELECT
语句的输出绑定到
POJO
。指定的类需要具有与投影属性完全匹配的构造函数:

公共类TotalProductDTO{
私有字符串类别;
私人长期产品可用;
公共TotalProductDTO(字符串类别,长productsAvailable){
this.category=类别;
this.productsavaailable=productsavaailable;
}
公共字符串getCategory(){
退货类别;
}
公共无效集合类别(字符串类别){
this.category=类别;
}
公共长getProductsAvailable(){
返回产品可用;
}
public void setProductsAvailable(长productsAvailable){
this.productsavaailable=productsavaailable;
}
}
您可以使用下面的方法查看所需的Json输出

@RestController
公共类产品控制器{
私有最终产品存储库产品存储库;
公共产品控制器(ProductRepository ProductRepository){
this.productRepository=productRepository;
}
@GetMapping(值={“/availableProducts”})
公共响应可用产品数量(){
List totalProducts=productRepository.countTotalProductsByCategory();
返回响应正确(totalProducts);
}
}
因此,您将获得以下json:

[
{
“类别”:“笔记本电脑”,
“产品可用”:2
},
{
“类别”:“pc”,
“productsAvailable”:1
}
]

单次查询的问题在哪里?单次查询的问题在哪里?