Bom dia,
Como faço para fazer uma subquery com o hibernate?
Query
select * from brand
where not exists(select 1 from history h
where h.iduser = 1
and h.idbrand = brand.idbrand
and DATE_ADD(h.datecreate, INTERVAL 1 DAY) >= now())
tentei por directamente no createQuery, (session.createQuery("from " + table + " " + whereClause ) mas já percebi que não dá.
Já tive a pesquisar o Criteria mas mesmo assim não consegui perceber como fazer.
Será que alguém pode dar uma mãozinha?
Cumprimentos,
Pesquisa sobre Criteria Subqueries.exists.
Aqui tem um exemplo pronto para se basear: http://www.cereslogic.com/pages/2008/09/22/hibernate-criteria-subqueries-exists
Boa noite,
Obrigado javaflex, já tinha conseguido resolver 
Criteria criteria = session.createCriteria(Brand.class, "b");
Date dt = new Date();
Calendar c = Calendar.getInstance();
c.setTime(dt);
c.add(Calendar.DATE, -1);
dt = c.getTime();
criteria.add(Subqueries.notExists(
DetachedCriteria.forClass(History.class, "h")
.setProjection(Projections.id())
.add(Restrictions.eqProperty("h.brand.idbrand", "b.idbrand"))
.add(Restrictions.eq("h.user.iduser", 1))
.add(Restrictions.gt("h.datecreated", dt))
)).setMaxResults(limit)
.add(Restrictions.sqlRestriction("1=1 order by rand()"));;
Cumprimentos