Verificar queries com valores preenchidos no Hibernate/JPA

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

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…

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

Voce nao vai ver com “as interrogacoes” preenchidas :slight_smile: 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.

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