Boa Tarde Pessoal,
Estou tendo um problema quando realizo um fetch em 3 entidades e retorno ela dentro de um NEW agrupado com outra classe, o JPA não entende que eu estou retornando todos os elementos e explode a exceção. Alguem teria alguma idéia de como resolver isso?
Caused by: org.hibernate.QueryException: query specified join fetching, but the owner of the fetched association was not present in the select list [FromElement{explicit,not a collection join,fetch join,fetch non-lazy properties,classAlias=null,role=null,tableName=TB_GESTOR,tableAlias=gestor2_,origin=TB_PRODUCAO_UNIFICADA producaoun1_,columns={producaoun1_.CO_IBGE ,className=br.gov.datasus.entidades.commons.Gestor}}] [ select new
br.gov.datasus.faec.model.dto.ProducaoAgrupada(PU , P)from br.gov.datasus.aj.model.Procedimento P , br.gov.datasus.faec.model.ProducaoUnificada PU join fetch PU.gestor join fetch PU.rubrica left join fetch PU.estabelecimento where PU.dtCmpt = ‘201604’ and PU.tipoGestao = ‘E’ and PU.gestor.codigo = ‘150000’ and PU.procedimento = P.codigo ]
public List getProducaoUnificada() {
StringBuilder sb =new StringBuilder();
sb.append(" select new br.gov.datasus.faec.model.dto.ProducaoAgrupada(PU , P) from Procedimento P , ProducaoUnificada PU "); sb.append(" join fetch PU.gestor"); sb.append(" join fetch PU.rubrica"); sb.append(" left join fetch PU.estabelecimento"); sb.append(" where PU.dtCmpt = '201604' and PU.tipoGestao = 'E' and PU.gestor.codigo = '150000' "); sb.append(" and PU.procedimento = P.codigo "); TypedQuery<Object> query = em.createQuery(sb.toString(),Object.class); List<Object> lista = query.getResultList(); return lista;}
CLASSE PRODUÇÂO AGRUPADA
package br.gov.datasus.faec.model.dto;
public class ProducaoAgrupada {
public Object producaoUnificada;
public Object procedimento;public ProducaoAgrupada() { // TODO Auto-generated constructor stub }public ProducaoAgrupada( Object producaoUnificada ,Object procedimento) { this.producaoUnificada = producaoUnificada; this.procedimento = procedimento; } }