Pessoal,
Eu tenho uma DetachedCriteria que vou utilizar em uma Criteria com Subqueries.exists porém se eu pego a executableCriteria da DetachedCriteria o select gerado é diferente do que quando está como subquery de uma Criteria.
Olhem o exemplo:
DetachedCriteria dt = DetachedCriteria.forClass(PrecoVendaVO.class,"prSub");
dt.createAlias("clientes","cli");
dt.add(Restrictions.eq("cli.id",new Integer(195)));
dt.setProjection(Projections.id());
dt.getExecutableCriteria(se).list();
Gera o seguinte SQL:
SELECT this_.ID AS y0_
FROM tprecosven this_, tprecosven_cli clientes3_, tclientes cli1_
WHERE this_.ID = clientes3_.tprven_id
AND clientes3_.cli_id = cli1_.ID
AND cli1_.ID = ?
Porém quando tenho assim:
DetachedCriteria dt = DetachedCriteria.forClass(PrecoVendaVO.class,"prSub");
dt.add(Restrictions.eqProperty("prSub.id","preco.id"));
dt.createAlias("clientes","cli");
dt.add(Restrictions.eq("cli.id",new Integer(195)));
dt.setProjection(Projections.id());
Criteria cri = se.createCriteria(PrecoVendaVO.class,"preco");
cri.add(Subqueries.exists(dt));
cri.list();
gera o seguinte SQL:
SELECT this_.ID AS id24_0_, this_.cod_preven AS cod2_24_0_,
this_.descricao AS descricao24_0_
FROM tprecosven this_
WHERE EXISTS (SELECT this0__.ID AS y0_
FROM tprecosven this0__
WHERE this0__.ID = this_.ID AND cli1_.ID = ?)
O primeiro select gerado é diferente do sub-select do segundo.
O erro acontece porque na tabela do segundo select não existe o campo cli1_.id.
Alguém sabe me dizer o por que ou como eu devo proceder???
Obrigado