Hibernate: query com multiplos joins e parenteses  XML
Índice dos Fóruns » Persistência: Hibernate, JPA, JDBC e outros
Autor Mensagem
marcosalex
GUJ Expert
[Avatar]

Membro desde: 20/02/2008 12:32:59
Mensagens: 3371
Offline

Tenho de usar o Hibernate com o MS Access e estou tendo um problema: quando tenho uma entidade com mais de um relacionamento, as querys nao funcionam. Configurando pro hibernate mostrar o SQL, vi que o framework monta um sql utilizando multiplos joins, mais ou menos assim:

select a.col1,
a.col2,
b.col1,
b.col2,
c.col1
from tabela1 a
left outer join tabela2 b on a.col1 = b.col1
left outer join tablela3 c on a.col1 = b.col1

só que o Acess não aceita essa sintaxe, você deve colocar entre parênteses os joins


select a.col1,
a.col2,
b.col1,
b.col2,
c.col1
from tabela1 a
left outer join (tabela2 b
left outer join tablela3 c on a.col1 = b.col1)
on a.col1 = b.col1


Minha dúvida: existe alguma forma de mudar a sintaxe que o Hibernate utiliza pra montar as querys? Estou tendo de fazer chamados em SQL puro toda vez que isso acontece, está ficando contraprodivo...

[Yahoo!] aim icon [ICQ]
pablouu
Thread.start()
[Avatar]

Membro desde: 27/04/2009 19:35:47
Mensagens: 46
Offline

O dialeto que vc está usando está correto?

Sun Certified Java Programer 6.0
[Email] [MSN]
marcosalex
GUJ Expert
[Avatar]

Membro desde: 20/02/2008 12:32:59
Mensagens: 3371
Offline

pablouu wrote:O dialeto que vc está usando está correto?


Tive de criar um dialeto porque não encontrei uma classe gratuita.

Aliás, criar não, encontrei na Net, acho que foi até aqui no GUJ. Mas como ele herda quase tudo de um genérico, não implementa essa parte e não encontrei uma referência de como deveria sobrescrever pra atender, ou sei isso é complexo.
[Yahoo!] aim icon [ICQ]
felipeguerra
GUJ Ranger

Membro desde: 26/03/2007 16:36:54
Mensagens: 987
Localização: São Paulo
Offline

Hibernate com Access?

A vida de programador é sofrida...

"Antes da iluminação cortar lenha, carregar água. Depois da iluminação cortar lenha, carregar água..."
marcosalex
GUJ Expert
[Avatar]

Membro desde: 20/02/2008 12:32:59
Mensagens: 3371
Offline

felipeguerra wrote:Hibernate com Access?

A vida de programador é sofrida...


Pois é, o cúmulo do absurdo, mas tenho um cliente que é apaixonado pelo Access e não abre mão.

O dialeto que criei pro Access, foi esse:
http://www.guj.com.br/java/27514-duvidas-hibernate

Funciona, com o único detalhe que você não pode ativer o SQL Comment do hibernate, porque o Access se confunde com os comentários e fala que o comando é inválido.

[Yahoo!] aim icon [ICQ]
marcosalex
GUJ Expert
[Avatar]

Membro desde: 20/02/2008 12:32:59
Mensagens: 3371
Offline

Só pra deixar documentado no tópico caso alguem venha pesquisar nele, pro dialeto funcionar é preciso sobrescrever o método transformSelectString.
Encontrei o exemplo listado abaixo,mas ele não conseguiu formatar corretamente, precisa ser melhorado.



Como meu projeto está atrasado, eu tinha duas opções: quebrava a cabeça nesse dialeto pra conseguir usar o Hibernate na sua plenitude ou chutava o balde e diminuia as referencias à relacionamentos nos meus pojos e usava SQL puro quando necessário.

Acabou que preferi esquecer o dialeto porque corria o risco de demorar demais pra arrumá-lo e estourar o projeto, mas assim que tiver tempo, posto a solução completa. Ou se alguém estiver a fim de tentar, pelo menos dei o caminho das pedras.

This message was edited 1 time. Last update was at 14/01/2011 11:40:36

[Yahoo!] aim icon [ICQ]
 
Índice dos Fóruns » Persistência: Hibernate, JPA, JDBC e outros
Ir para:   
Powered by JForum 2.1.8 © JForum Team