Adr*_*Cox 9 java querydsl jpa-2.0
编辑:事实证明JPA无法表达这一点.解决方案是在SQL中重写.
我正在使用QueryDSL对JPA数据集执行聚合查询以进行报告.我没有问题提取报告数据.例如:
...
query = query.groupBy(QVehicle.vehicle.make, QVehicle.vehicle.model);
return query.listDistinct(new QMakeModelReportData(
QVehicle.vehicle.make, QVehicle.vehicle.model,
QVehicle.vehicle.make.count()));
Run Code Online (Sandbox Code Playgroud)
这将生成我的DTO对象列表,每个对象都包含车辆制造,车辆模型以及制作模型的车辆数量.像这样:
Ford, Focus, 14
Ford, Mondeo, 4
Vauxhall, Astra, 4
Run Code Online (Sandbox Code Playgroud)
但在实际执行查询之前,我无法计算出计算行数的语法.我想象的语法是这样的,它不存在:
return query.countDistinct(QVehicle.vehicle.make, QVehicle.vehicle.model);
Run Code Online (Sandbox Code Playgroud)
我最终选择了一个相当低效的选项:
return query
.listDistinct(QVehicle.vehicle.make, QVehicle.vehicle.model)
.size();
Run Code Online (Sandbox Code Playgroud)
有更好的吗?