Verificar queries com valores preenchidos no Hibernate/JPA  XML
Índice dos Fóruns » Persistência: Hibernate, JPA, JDBC e outros
Autor Mensagem
Mikhas
Virtual Machine Man
[Avatar]

Membro desde: 17/06/2008 11:10:50
Mensagens: 677
Localização: São Paulo
Offline

Oi galera!

Estou desenvolvendo meu TCC usando JPA 2.0 (Hibernate) e estou tendo alguns problemas an hora de executar uma querie.
Gostaria de saber como posso verificar a querie que é executada pelo hibernate.

Ja tentei adicionar na configuração do meu Log4j o pacote org.hibernate.sql e org.hibernate.type mas não deu em nada.

Alguem pode me dar uma luz.

Grato

Refractor 1.6 - Easy reflection framework
Agora muito mais rapido!
Raze - The fastest CSS selector engine




[Email] [MSN]
rogelgarcia
GUJ Master
[Avatar]

Membro desde: 21/06/2007 23:27:21
Mensagens: 1850
Offline

No seu hibernate.properties.. ou nas configuracoes no XML onde vc coloca os properties do hibernate coloque a seguinte propriedade


hibernate.show_sql=true

Vai mostrar as queries no log..

Rógel Garcia, criador do framework NEXT

http://www.nextframework.org
Mikhas
Virtual Machine Man
[Avatar]

Membro desde: 17/06/2008 11:10:50
Mensagens: 677
Localização: São Paulo
Offline

Sim, isso eu ja tenho. Eu quero é ver essas queries com as interrogações preenchidas saca.

Refractor 1.6 - Easy reflection framework
Agora muito mais rapido!
Raze - The fastest CSS selector engine




[Email] [MSN]
partenon
JavaChild
[Avatar]
Membro desde: 27/06/2010 15:08:10
Mensagens: 103
Localização: Brno, Czech Republic
Offline

Voce nao vai ver com "as interrogacoes" preenchidas O Hibernate (e qualquer aplicacao bem feita) usa PreparedStatement, ou seja, ele primeiro manda o "modelo" da SQL para o driver JDBC, e este vai compilar a SQL (ou armazena-la em algum cache, possivelmente). Entao, ele reusa estes PreparedStatement para cada execucao. Ou seja, o Hibernate em si nao sabe qual a SQL final, apenas a SQL "modelo" e os valores para as interrogacoes.

Voce pode tentar ver na documentacao do seu driver JDBC se existe alguma opcao para imprimir as SQLs executadas (acho dificil, pq a maioria dos drivers JDBC fazem algo semelhante ao PreparedStatement na comunicacao com o banco). Ou voce pode ver direto no seu banco de dados. No MySQL, por exemplo, voce pode ativar o "log SQL", e ver quais foram as clausulas executadas.

Mas eu diria que eh razoavelmente seguro pegar esta query "com interrogacoes" e muda-la para usar os parametros que vc configurou.

http://www.google.com/profiles/partenon
[WWW]
javando
JavaEvangelist

Membro desde: 04/12/2006 15:42:08
Mensagens: 409
Offline

Opa, dá sim =)

só q eu não sei a maneira correta =/ ahuahau

tenta inserir esses parametros no seu log4j.properties:

log4j.logger.org.hibernate.type=info
log4j.logger.net.sf.hibernate.type=error

eu nao sei pq .. mas aki no trabalho ele mostra em algumas querys e em outras não =/ mas tambem eu to em um legado aki com hibernate 1 beta ...

tenta ai .. se nao conseguir oq vc qr com isso, vale dar umr procurada na documentação ... pq tem como sim vc ver o log com os parametros em bind.

se nao der certo com os dois tenta inserir só a primeira linha ou só a segunda alinha ..

a saida pode ser o comando com os ? substituidos ou algo como isso:

2006-07-28 09:57:12,061 DEBUG org.hibernate.SQL - insert into BASKET_LINE_ALLOC (LAST_UPDATED, QUANTITY, CUSTOMER_REF, NOTES, BRANCH_ID, FUND_ID, TEMPLATE_ID,
BASKET_LINE_ALLOC_ID) values (?, ?, ?, ?, ?, ?, ?, ?)
2006-07-28 09:57:12,081 DEBUG org.hibernate.type.TimestampType - binding '2006-07-28 09:57:12' to parameter: 1
2006-07-28 09:57:12,081 DEBUG org.hibernate.type.IntegerType - binding '3' to parameter: 2
2006-07-28 09:57:12,082 DEBUG org.hibernate.type.StringType - binding '' to parameter: 3
2006-07-28 09:57:12,082 DEBUG org.hibernate.type.StringType - binding '' to parameter: 4
2006-07-28 09:57:12,082 DEBUG org.hibernate.type.LongType - binding '511' to parameter: 5
2006-07-28 09:57:12,082 DEBUG org.hibernate.type.LongType - binding '512' to parameter: 6
2006-07-28 09:57:12,082 DEBUG org.hibernate.type.LongType - binding null to parameter: 7
2006-07-28 09:57:12,082 DEBUG org.hibernate.type.LongType - binding '180030' to parameter: 8

falow

This message was edited 1 time. Last update was at 31/08/2010 09:30:35


Antonio Rafael Rodrigues
SCJP
SCWCD
SCBCD
site: http://www.antoniorafael.eti.br
 
Índice dos Fóruns » Persistência: Hibernate, JPA, JDBC e outros
Ir para:   
Powered by JForum 2.1.8 © JForum Team