1

これが可能かどうかはわかりませんが、単一の基準クエリを作成し、独自の制限に基づいて複数のカウントを返す方法があるかどうか疑問に思っています。

    Criteria criteria = session.createCriteria(EmployeeProfile.class);

    Integer pAccrualBalance = ((Number)criteria
            .add(Restrictions.gt("pAccrualBalance", BigDecimal.ZERO))
            .setProjection(Projections.rowCount()).uniqueResult()).intValue();

    Integer employeeCount = ((Number)criteria.setProjection(Projections.rowCount()).uniqueResult()).intValue();

    logger.info("verify pAccrualBalance import count " + pAccrualBalance);

    logger.info("verify employee import count " + employeeCount);

このコードの問題は、pAccrualBalance 制限によって employeeCount 結果セットが制限されることです。別のクエリを実行することなく、employeeCount の無制限のカウントを取得したいと思います。

4

1 に答える 1

0

テーブルに 2 回参加する必要があります...これは Criteria で実行できますが、多くの場合、HQL の方が簡単です。

select count(ep1.id), count(ep2.id)
from EmployeeProfile as ep1
join EmployeeProfile as ep2
where ep2.pAccrualBalance > 0
于 2013-11-15T10:33:37.207 に答える