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;