4

isApprovedisPublishedがtrueに設定されているエステートを取得する DetachedCriteria を作成しました。次のように定義されます。

DetachedCriteria activePublishedCriteria = DetachedCriteria.forClass(Estate.class)
    .add(Restrictions.eq("isApproved", true))
    .add(Restrictions.eq("isPublished", true))
    .setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);

いくつかのクエリでこの基準を再利用したいと思います。この場合、isApprovedおよびisPublishedの制限を DetachedCriteriaに置き換えたいと思います

Criteria criteria = getSession().createCriteria(Estate.class)
       .createAlias("city", "c")
       .add(Restrictions.eq("c.id", cityID))
       // the following 2 lines should use the DetachedCriteria 
       .add(Restrictions.eq("isApproved", true))
       .add(Restrictions.eq("isPublished", true))
       .setProjection(Projections.rowCount());
  return (Integer) criteria.list().get(0);

これを行う方法はありますか?使ってみた

.add(Subqueries.geAll(....

しかし、それを適切に機能させることはできません。Hibernate のサブクエリに関する適切なドキュメントが見つかりませんでした。ヒントは大歓迎です。

4

1 に答える 1

2

これはうまくいくはずです:

.add(Subqueries.geAll(value, detachedCriteria))

于 2010-05-13T20:40:31.337 に答える