0

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

我有以下查询。

List<PurchaseRequest> prs = this.session.createCriteria(PurchaseRequest.class).list();

在 PurchaseRequest 中,我有一个名为 current_state 的列。我想查询所有 PurchaseRequest 行并将 current_states 分组在一起,以便我可以获得每个 current_state 的总数。

状态看起来像这样,创建者、授权者、转让者。等等

4

1 回答 1

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 正在处理对象)。

于 2012-06-20T14:56:22.653 回答