我想知道是否有人知道如何使用hibernates条件查询从单个查询中获取多个计数?
我有以下查询。
List<PurchaseRequest> prs = this.session.createCriteria(PurchaseRequest.class).list();
在PurchaseRequest中,我有一个名为current_state的列。我想查询所有PurchaseRequest行并将current_states分组在一起,这样我就可以得到每个current_state的总数。
国家看起来像这样,创造者,授权者,转让人。等
答案 0 :(得分:1)
试试这个:
Criteria criteriaPurchaseRequest=this.session.createCriteria(PurchaseRequest.class);
ProjectionList projectionList = Projections.projectionList();
projectionList.add(Projections.groupProperty("current_state"));
projectionList.add(Projections.rowCount());
criteriaPurchaseRequest.setProjection(projectionList);
List results = criteriaPurchaseRequest.list();
获得结果:
List results = criteriaPurchaseRequest.list();
Map currentStateMap = new HashMap();
Iterator it=results.iterator();
while (it.hasNext()){
Object obj[]=(Object[])it.next();
CurrentState currentState = (CurrentState )obj[0];
currentStateMap .put(currentState.getDescription().toLowerCase(), (Integer)obj[1]);
}
其中CurrentState是一个表示列current_state的对象(记住,Hibernate正在使用对象)。