|
workarround not working for me (hibernate 4.2.2)
see
CriteriaBuilder criteria = entityManager.getCriteriaBuilder(); CriteriaQuery<ContratoPrestacaoServico> query = criteria.createQuery(ContratoPrestacaoServico.class); Root<ContratoPrestacaoServico> from = query.from(ContratoPrestacaoServico.class);
Join<ContratoPrestacaoServico, ContratoPrestacaoServicoOrdemServico> contratoOrdemServicosJoin = (Join<ContratoPrestacaoServico, ContratoPrestacaoServicoOrdemServico>) from.fetch(ContratoPrestacaoServico_.ordemServicos, JoinType.LEFT); Join<ContratoPrestacaoServicoOrdemServico, OrdemServico> ordemServicosJoin = (Join<ContratoPrestacaoServicoOrdemServico, OrdemServico>) contratoOrdemServicosJoin.fetch( ContratoPrestacaoServicoOrdemServico_.ordemServico, JoinType.LEFT); Join<OrdemServico, NotaFiscalServico> ordemServicosNotaFiscalServicoJoin = (Join<OrdemServico, NotaFiscalServico>) ordemServicosJoin.fetch(OrdemServico_.notaFiscalServico, JoinType.LEFT); Join<NotaFiscalServico, Titulo> ordemServicosTitulosJoin = (Join<NotaFiscalServico, Titulo>) ordemServicosNotaFiscalServicoJoin.fetch(NotaFiscalServico_.titulos, JoinType.LEFT);
query.distinct(true);
query.where(criteria.and( criteria.equal(from.get(ContratoPrestacaoServico_.codigo), criteria.parameter(Long.class, "identificador")), criteria.notEqual(ordemServicosNotaFiscalServicoJoin.get(NotaFiscalServico_.status), StatusNotaFiscal.CANCELADO), criteria.equal(ordemServicosTitulosJoin.get(Titulo_.status), StatusTitulo.NAO_PAGO)));
Because "criteria.equal(ordemServicosTitulosJoin.get(Titulo_.status), StatusTitulo.NAO_PAGO)" titulos not loading fetch.
|