You can use Hibernate DetachedCriteria to express a subquery. This Hibernate doc will give you a good idea about the topic.
Here is how you can write your SQL query by using Hibernate Criteria/DetachedCriteria:
//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();