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 に答える