Hibernate subquery
final Criteria rootCriteria = session.createCriteria(Company.class, "c").setMaxResults(maxResult).setFirstResult(firstResult) ; final DetachedCriteria subQuery = DetachedCriteria.forClass(Target.class, "t") // .add(Restrictions.eq("t.id", targetId)).add(Restrictions.eq("t.owner.id", ownerId)) // .createAlias("t.companies", "cp") // .setProjection(Projections.property("cp.id")); final List<Company> companies = rootCriteria.add(Subqueries.propertyIn("c.id", subQuery)).list();
OR
DetachedCriteria subQuery = DetachedCriteria.forClass(WorkgroupD.class, "wgd")
.add(Restrictions.eq("wgd.empId.empId", empId))
.setProjection(Projections.property("workgroupId"));
Criteria criteria = sf.getCurrentSession().createCriteria(MasJobtype.class, "mj")
.add(Subqueries.propertyIn("mj.workgroupId.workgroupId", subQuery));
return criteria.list();
ที่มา :: http://avricot.com/blog/index.php?post/2011/07/11/hibernate-%3A-paginationwith-collection-and-the-criteria-api