Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.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
Spring boot 如何在SpringBootJPA中进行分组汇总。要获取对象属性和对象列表的总和吗_Spring Boot_Spring Data Jpa - Fatal编程技术网

Spring boot 如何在SpringBootJPA中进行分组汇总。要获取对象属性和对象列表的总和吗

Spring boot 如何在SpringBootJPA中进行分组汇总。要获取对象属性和对象列表的总和吗,spring-boot,spring-data-jpa,Spring Boot,Spring Data Jpa,我有一个实体类的股票,持有两个实体产品和仓库。产品和仓库的组合始终是唯一的,库存实体用于存储每个仓库中每个产品的库存信息 @Entity public class Stock extends ReusableFields { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.SEQUENCE) Long stockId;

我有一个实体类的股票,持有两个实体产品和仓库。产品和仓库的组合始终是唯一的,库存实体用于存储每个仓库中每个产品的库存信息

@Entity
public class Stock extends ReusableFields
{

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    Long stockId;

    @ManyToOne(fetch=FetchType.LAZY,cascade = CascadeType.ALL)
    @JoinColumn(name="productId",nullable=false )
    @JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
    @NotFound(action=NotFoundAction.IGNORE)
    @NonNull
    Product product;

    @ManyToOne(fetch=FetchType.LAZY,cascade = CascadeType.ALL)
    @JoinColumn(name="warehouseName",nullable=false)
    @JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
    @NotFound(action=NotFoundAction.IGNORE)
    @NonNull
    Warehouse warehouse;

    @NonNull
    Float quantityInHand;

    //getter and setter
}
现在,我想获取每个产品的总库存,然后是详细库存。乙二醇

{
    "data": [
        {
            "productId": 22,
            "totalQuantityInHand": 50,
            "details": [
                {
                    "warehouse": "warehouse1",
                    "quantityInHand": 20
                },
                {
                    "warehouse": "warehouse2",
                    "quantityInHand": 30
                }
            ]
        }
    ]
}
实现这一点的一种方法是从库存中获取所有记录,然后获取唯一的产品ID,然后在每个productid上循环,并向DAO对象提供该产品的productid、totalquantity和库存对象列表

我想知道是否有更好的最佳解决方案可以使我免于编写迭代。基本上,如果我必须在mysql中执行同样的操作,我的查询将有点像这样

SELECT 
        p.product_id AS productId,
        s.warehouse_name   AS warehouseId, 
       SUM(s.quantity_in_hand) AS quantity 
FROM   stock s 
       INNER JOIN product p 
               ON p.product_id = s.product_id 
       INNER JOIN warehouse w 
               ON w.warehouse_id = s.warehouse_name 
GROUP BY productId,warehouseId
WITH ROLLUP;