Pessoal to com uma dúvida em relação a fazer uma pesquisa utilizando restrições do criteria. Utilizo criteria com paginação(PageWrapper) de 10 em 10 para trazer os itens com melhor performance.
Tenho 3 tabelas inicialmente
-BO (onetoMany para “bonat”, possuo a lista de BOnat)
-BONat (ManytoOne para bo, possuo o fkbo, e ManytoOne para nat, possuo o fknat)
-Nat (OnetoMany para “bonat”, possuo a lista de BoNat)
Onde eu aplico na minha classe de criteria
Criteria criteria = manager.unwrap(Session.class).createCriteria(Bo.class);
Ou seja faço minhas consultas, retornos e restrições tudo em cima da tabela BO
Possuo um filtro onde passo um ID da tabela NAT e tenho que trazer todos os registros de BO, onde consegui fazer da seguinte maneira utilizando o DetachedCriteria
DetachedCriteria filtroNatureza = DetachedCriteria.forClass(BoNatureza.class);
filtroNatureza.setProjection(Property.forName(“bo”));
filtroNatureza.add(Restrictions.eq(“natureza.idNatureza”, filtro.getNaturezaFato()));
criteria.add(Subqueries.propertyIn(“idBo”, filtroNatureza));
Ou seja crio um DetachedCriteria de Bonatureza pois la tenho o fknatureza
crio uma projecao do objeto bo que tenho em bonatureza
adiciono a restrição acessando minha fknatureza para filtrar o id que recebo no filtro
e adiciono no meu criteria a subquery.
Porém eu tenho mais outra tabela chamada envolvimento
onde ela é manytoOne para tabela “bonat” e quero acessar um fk dentro dessa tabela envolvimento, tentei utilizar o mesmo raciocínio acima mas não funcionou =(

