-1
Select "answer" 
  from 'Details' 
 where "question" like 'childimmunization'
   AND "subject" IN (select "subject"
                   from 'Details' 
                   where "question" like 'childgender'
                     AND "answer" = "M" and "test" ="1");

表结构为:

Subject Test    Survey  Question              answer
----------------------------------------------------
rahul   1       one     childimmunization     Yes
rahul   1       one     childgender           M
Jyothi  1       one     childimmunization     No
Jyothi  1       one     childgender           F
Chikku  1       one     childimmunization     No
Chikku  1       one     childgender           M
4

1 回答 1

1

您可以使用 Hibernate DetachedCriteria 来表达子查询。这个 Hibernate 文档会给你一个关于这个主题的好主意。

以下是使用 Hibernate Criteria/DetachedCriteria 编写 SQL 查询的方法:

//creates a DetachedCriteria
DetachedCriteria dc = DetachedCriteria.forClass(Details.class);

//restrictions for the sub query
dc.add(Restrictions.like("question", "childgender"));
dc.add(Restrictions.eq("answer", "M"));
dc.add(Restrictions.eq("test", "1"));

//this is what your sub query will return
dc.setProjection(Projections.property("subject"));

//Criteria for Details.class
Criteria criteria = sessionFactory.getCurrentSession().createCriteria(
            Details.class);

//restriction on your Criteria
criteria.add(Restrictions.like("question", "childimmunization"));

//you can add sub queries to your criteria as this
criteria.add(Subqueries.propertyIn("subject", dc));

// and this is result "answer"
criteria.setProjection(Projections.property("answer"));

List list = criteria.list();
于 2013-09-02T10:24:23.940 回答