Jpql usando fetch join + new no select

0 respostas
jpajavahibernate
arturbr4

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;

}

}
Criado 24 de outubro de 2016
Respostas 0
Participantes 1