Hibernate, Join Fetch de coleções existentes em elementos de um map

1 resposta
ercardoso

Olá a todos,

Pessoal, estou precisando trazer algunas relacionamentos em uma query HQL onde a sua estrutura acaba ficando um pouco complicado desenvolve-la.

Tenho algo parecido com :

public class Fabrica { 
   private Map<EnumCarro,Carro> carros;
}

public enum EnumCarro { 
   CARRO_A,CARRO_B
}
public abstract class Carro {
   private EnumCarro key; 
}
public class Audi extends Carro {
    private List<Acessorio> acess; 
}
public class Corsa extends Carro { 
   private List<Roda> rodas;
}

Como podem ver, tenho a classe fabrica q tem um Map onde sua key eh um Enum e pode ter objetos do tipo Carro. Carro é abstrato e contem a key (enum) q eh guardada. meu problema é montar a query onde eu possa trazer a lista acess e rodas..

Algo parecido com:

SELECT f FROM Fabrica f JOIN FETCH f.carros LEFT JOIN FETCH f.carros.CARRO_A.acess LEFT JOIN FETCH f.carros.CARRO_B.rodas

Desde já agradeço! :roll:

1 Resposta

ercardoso

resolvido…

meu colega me passou uma query forçando o join fetch referindo na condição do where cada alias o valor do enum, efim…
de maneira simples funciona :

SELECT f FROM Fabrica f JOIN FETCH f.carros mapCarro LEFT JOIN FETCH mapCarro.acess LEFT JOIN FETCH mapCarro.rodas

Mesmo que só tenha Audi e ele nao tem a collection rodas, funciona bem a query e assim se tiver os 2 … as collections são carregadas :slight_smile:

Tão simples quanto isso.

Criado 25 de setembro de 2008
Ultima resposta 26 de set. de 2008
Respostas 1
Participantes 1