Hibernate - Criteria

como faço, utilizando o critéria do hibernate a seguinte consulta!

select * from A where id_A in (select id_A from B where fl_ativo=1) order by nm_a

Da uma olhada no item 14.13

http://docs.jboss.org/hibernate/core/3.3/reference/en/html/queryhql.html

desse modo eu tenho que enviar o comando sql como uma query! Entretanto queria evitar isso! Queria utilizando algo como o criteria ao invés de enviar a consulta!

http://www.cereslogic.com/pages/2008/09/22/hibernate-criteria-subqueries-exists/

Consegui fazer isso

Criteria criteria = hibernateOperation.getCriteria(A.class);

DetachedCriteria detachedCriteria = DetachedCriteria.forClass(B.class, "b");
detachedCriteria.add(Restrictions.eq("fl_ativo", true));
criteria.add(Subqueries.in(1, detachedCriteria.setProjection(Projections.property("b.idA"))));

List<A> especialidades = (List<A>) hibernateOperation.listByCriteria(criteria);

Tive uma dúvida. No comando 4 (linha do criteria.add(Subqueries.in) não entendi o primeiro parâmetro. Eu achava que era para ser o nome da coluna a ser incluída no in. Entretanto quando colocava a string (“idA”) dava um erro de conversão de int to String. Por isso coloquei o número 1 e passou a funcionar blz.

Só que pela surpresa a consulta não é realizada direita! E o pior, pelo console a consulta esta correta.

select this_.id_A as id1_115_0_, this_.nm_A as nm2_115_0_ from A this_ where ? in (select b_.Id_A as y0_ from B b_ where b_.Fl_ativo=?)

Executo a consulta no sql a consulta retorna correta, mais no hibernate é como se o in não fosse avaliado!