E ae Pessoal,
estou com um problema em uma consulta com criteria
estou tentando criar o seguinte sql em criteria
select b.cli_codext vis_cli_codigo,
b.cli_fili vis_cli_filial,
b.cli_razaosocial cli_razaosocial,
b.cli_nomefantasia nome_fantasia,
b.cli_cidade cidade,
b.cli_estado UF,
(select count(*)
from visita v1
where v1.vis_cli_codigo = b.cli_codext
and v1.vis_cli_filial = b.cli_fili
and v1.vis_tipovis_id = 1 ) consultiva
from cliente b
where (b.cli_codext, b.cli_fili) in
(select v.vis_cli_codigo, v.vis_cli_filial
from visita v
where v.vis_tec_codext = 414042
and trunc(vis_data) >= to_date('01/01/2011','dd/MM/yyyy'))
order by cli_razaosocial
eu ja possuo as duas consultas prontas
a primeira
(select count(*)
from visita v1
where v1.vis_cli_codigo = b.cli_codext
and v1.vis_cli_filial = b.cli_fili
and v1.vis_tipovis_id = 1
DetachedCriteria subQuery1 = DetachedCriteria.forClass(Visita.class, "v")
.createAlias("v.tipo", "tv", Criteria.INNER_JOIN)
.add(Restrictions.eq("tv.id", new Long(1)))
.setProjection(Projections.alias(Projections.rowCount(), "CONSULTIVA"));
e a segunda
Criteria c = session.createCriteria(Cliente.class, "c")
.add(Restrictions.in("c.id", subQueryVisita.getExecutableCriteria(session).list()))
.addOrder(Order.asc("razaoSocial"));
mas não sei como unir as duas para representar o sql acima, eu conheco somente quando uma subquery esta na clausula where
agora desta maneira acima nao.
Preciso de uma dica de como unir as duas consultas