hibernate条件查询在单个查询中获取多个计数。

时间:2012-06-20 14:40:34

标签: hibernate jpa

我想知道是否有人知道如何使用hibernates条件查询从单个查询中获取多个计数?

我有以下查询。

List<PurchaseRequest> prs = this.session.createCriteria(PurchaseRequest.class).list();
在PurchaseRequest中,我有一个名为current_state的列。我想查询所有PurchaseRequest行并将current_states分组在一起,这样我就可以得到每个current_state的总数。

国家看起来像这样,创造者,授权者,转让人。等

1 个答案:

答案 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正在使用对象)。