ManyToOne - Forçando Joins em vez de Selects  XML
Índice dos Fóruns » Persistência: Hibernate, JPA, JDBC e outros
Autor Mensagem
israel.fonseca
JavaBaby
[Avatar]

Membro desde: 13/10/2007 15:11:19
Mensagens: 88
Localização: Tubarão - SC
Offline

Pessoal, acho que essa pergunta é velha, mas procurei documentações a rodo, e inclusive aqui no fórum e não achei resposta.

A questão é simples:

Como forçar outer joins em vez de selects separados para classes mapeadas com many to one? Tenho as seguintes classes:



Filho possui um pai associado.

A seguinte query: "select f from Filho f" gera 2 selects:



Forçando a query com um fetch join o resultado vem da maneira desejada : "select f from Filho f left join fetch f.pai"



Então pergunto, como faço que os many to ones sejam carregados por padrão com um outer join? Para grafos de objetos significativos apenas colocando fetchs fiz a consulta ficar 10x mais rápida. E até me pergunto o do porque este não ser o procedimento padrão. Em fim, já tentei usar as anotações @Fetch, @LazyToOne e não deu em nada. Li coisas referente a desativar proxies e afins, mas achei tudo muito sinistro.

Alguém saberia me dizer o que fazer?

Obrigado.



http://israelfonseca.blogspot.com/
[MSN]
maior_abandonado
JWizard
[Avatar]

Membro desde: 03/09/2007 11:30:08
Mensagens: 2694
Localização: sp
Offline

da uma pesquisada na anotação @Fetch, com ela vc escolhe entre fazer join um select separado ou uma subquery

espero ter ajudado...

falando nisso, caso seu problema tenha sido resolvido, edite o seu primeiro post e coloque um [RESOLVIDO] no titulo do tópico.
israel.fonseca
JavaBaby
[Avatar]

Membro desde: 13/10/2007 15:11:19
Mensagens: 88
Localização: Tubarão - SC
Offline

Opa, descobri. Parece que a HQL ta acima da lei, e por padrão ela faz selects extras, diferente de Criteria que da preferencia a Joins.


http://israelfonseca.blogspot.com/
[MSN]
 
Índice dos Fóruns » Persistência: Hibernate, JPA, JDBC e outros
Ir para:   
Powered by JForum 2.1.8 © JForum Team