Hibernate Subquery和DetachedCriteria

时间:2010-05-07 09:04:25

标签: hibernate detachedcriteria subquery

我创建了一个DetachedCriteria,用于检索将已批准已发布设置为 true 的庄园。它以这种方式定义:

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

我想在某些查询中重复使用此条件。在这种情况下,我想用DetachedCriteria替换 isApproved isPublished 限制

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中找不到关于子查询的正确文档。欢迎提示。

1 个答案:

答案 0 :(得分:2)

这应该有效:

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