Recuperar Query Nativa SQL (JPA)

6 respostas
Foxlol

Pessoal, gostaria de saber se tem como eu recuperar a query sql nativa gerada de uma query JPQL (do toplink por exemplo).

A utilização seria informar a query no erro para facilitar o suporte da aplicação.

Gostaria de saber até se é uma boa abordagem.

Valeu.

6 Respostas

thiagotn

Na configuração do Hibernate você pode habilitar o recurso abaixo e depois recuperar o SQL gerado através do console do Eclipse.

<property name="showSql" value="true" />

No TopLink precisaria dar uma pesquisada pra saber qual é o recurso equivalente.

Foxlol

thiagotn:
Na configuração do Hibernate você pode habilitar o recurso abaixo e depois recuperar o SQL gerado através do console do Eclipse.

<property name="showSql" value="true" />

No TopLink precisaria dar uma pesquisada pra saber qual é o recurso equivalente.

Eae Thiago.

Então, eu preciso recuperar o SQL gerado dentro da minha aplicação mesmo, para apresentá-la ao usuário.

Vlw

Foxlol

Ninguém? =/

S

Beleza cara?
Você precisa pra gravar o log em uma base ou coisa do tipo?
Se for a unica coisa que que sei que dá é quando você capturar a excessão, pega o a mensagem da exception e faça um parse por [], o que estiver dentro do [] é a query sql que o jpa pegou.
É a unica forma, não existe um métoto no entity manager que te retorne a sql query, pois a mesma é gerada dinamicamente.

Falou.

Foxlol

samurai:
Beleza cara?
Você precisa pra gravar o log em uma base ou coisa do tipo?
Se for a unica coisa que que sei que dá é quando você capturar a excessão, pega o a mensagem da exception e faça um parse por [], o que estiver dentro do [] é a query sql que o jpa pegou.
É a unica forma, não existe um métoto no entity manager que te retorne a sql query, pois a mesma é gerada dinamicamente.

Falou.

Ow kra, faz tempo que precisei disso ma não achei nada.

Acho que o jeito que vc falou eh o unico jeito mesmo.

Vlww brow.

Abraço.

S

Opa,
É realmente só agora eu vi a data do post :oops:

Mas aproveitando quem sabe você pode me ajudar: Quando uso uma query sql nativa no jpa, no retorno do select tenho 2 atributos com o mesmo nome porem em tabelas direfentes, mesmo colocando um alias quando o jpa retorna o resultado, vel o valor do atribudo repetido, por exemplo

Select pessoa.name, empresa.name from Empresa emp inner join Pessoa pes on pes.empresa_id=empresa.id

Esse select se executado no sgbd funciona e retorna corretamente, porem quando o jpa executa, vem a quantidade de linhas corretas, o pessoa.name vem correto porém no empresa.name o nome da pessoa se repete.
Já tentei usar alias pros retornos tipo:

Select pessoa.name NOME_PESSOA, empresa.name NOME_EMPRESA from Empresa emp inner join Pessoa pes on pes.empresa_id=empresa.id

mas não resolve.
Já passou por isso?

Criado 9 de dezembro de 2008
Ultima resposta 5 de dez. de 2009
Respostas 6
Participantes 3