Hibernate Criteria: Perform JOIN in Subquery/DetachedCriteria

Posted by Gilean on Stack Overflow See other posts from Stack Overflow or by Gilean
Published on 2010-04-08T18:34:35Z Indexed on 2010/04/09 3:03 UTC
Read the original article Hit count: 1270

I'm running into an issue with adding JOIN's to a subquery using DetachedCriteria. The code looks roughly like this:

Criteria criteria = createCacheableCriteria(ProductLine.class, "productLine");
criteria.add(Expression.eq("productLine.active", "Y"));

DetachedCriteria subCriteria = DetachedCriteria.forClass(Models.class, "model");
subCriteria.setProjection(Projections.rowCount());
subCriteria.createAlias("model.language", "modelLang");
criteria.add(Expression.eq("modelLang.language_code", "EN"));
subCriteria.add(Restrictions.eqProperty("model.productLine.id","productLine.id"));
criteria.add(Subqueries.lt(0, subCriteria));

But the logged SQL does not contain the JOIN in the subquery, but does include the alias which is throwing an error

SELECT *
FROM PRODUCT_LINES this_
WHERE this_.ACTIVE=?
AND ?                  <
  (SELECT COUNT(*) AS y0_
  FROM MODELS this0__
  WHERE modelLang3_.LANGUAGE      ='EN'
  AND this0__.PRODUCT_LINE_ID     =this_.ID
  )

How can I add the joins to the DetachedCriteria?

Hibernate version: 3.2.6.ga Hibernate core: 3.3.2.GA Hibernate annotations: 3.4.0.GA Hibernate commons-annotations: 3.3.0.ga Hibernate entitymanager: 3.4.0.GA Hibernate validator: 3.1.0.GA

© Stack Overflow or respective owner

Related posts about hibernate

Related posts about java