Dúvidas com jpql (herança)

8 respostas
dcorteztec

Boa tarde amigos,

eu tenho uma entidade pai vamos chamar de item, e ela tem muitas tabelas herdando dela usando esse tipo de herança

Bom ai vem a dúvida se eu fizer um select usando jpql

Ele traz todas as entidades em join. pergunta tem como evitar isso sem usar native query.

8 Respostas

Hebert_Coelho

hein?!

Vc ta querendo que tipo

public class Car{};
public class Fusca extends Car{};

Vc quer q ao trazer Car ele não traga um Fusca?

dcorteztec

a dúvida surgiu por causa desse artigo http://blog.caelum.com.br/jpa-com-hibernate-heranca-e-mapeamentos/

nessa parte

Hebert_Coelho

Realmente não sei. Até olhei no livro para ver se eu achava algo do tipo e não vi.

Eu imagino que não seja possível pelo fato de que JPA segue o conceito java na risca.

O conceito de que se Fusca extends Car, Fusca IS A Car.

Se você faz, select c from Car c, ele irá trazer todos os carros, apesar de que eu não vejo motivo para ele também carregar os campos que estão no fusca.

Você tem certeza de q ele está fazendo isso?

dcorteztec

tenho sim, porque isso esta acontecendo comigo quando estou criando índices no hibernate search, ele realiza uma query ela traz coisas que eu não preciso indexa, ai ela fica enorme e quebra a performance.

Hebert_Coelho

Em sua consulta você faz apenas isso? Select item from Item

dcorteztec

sim porq quero somente indexar um atributo do item

List<Item> items = em.createQuery("select item from Item as item  ").getResultList();
		for (Item  i : items) {
		fullTextEntityManager.index(i);
		}

ai demora uma vida, tá funcionando a indexação o problema é só de performance, pra não ocupar o java heap

Hebert_Coelho

Olha só, eu tava vendo aqui e vi que tem um modo diferente de fazer o HQL passando o caminho da classe inteira. Tenta aí o seguinte:
“select item from " + Item.class.getName()+ " as item”

Não sei se faz diferença, mas vai que… Né?

dcorteztec

vlw vou tentar amanhã ou hoje msm mando resultado

Criado 8 de fevereiro de 2012
Ultima resposta 8 de fev. de 2012
Respostas 8
Participantes 2