在Hibernate中是否能夠用實際值而不是問號打印生成的SQL查詢? sql
若是Hibernate API沒法實現,您將如何建議使用實值打印查詢? apache
將hibernate.cfg.xml
更改成: app
<property name="show_sql">true</property> <property name="format_sql">true</property> <property name="use_sql_comments">true</property>
在「 log4j.properties」中包括log4j及如下條目: spa
log4j.logger.org.hibernate=INFO, hb log4j.logger.org.hibernate.SQL=DEBUG log4j.logger.org.hibernate.type=TRACE log4j.appender.hb=org.apache.log4j.ConsoleAppender log4j.appender.hb.layout=org.apache.log4j.PatternLayout
您能夠將類別行添加到log4j.xml: hibernate
<category name="org.hibernate.type"> <priority value="TRACE"/> </category>
並添加休眠屬性: debug
<property name="show_sql">true</property> <property name="format_sql">true</property> <property name="use_sql_comments">true</property>
打開org.hibernate.type
Logger來查看實際參數如何綁定到問號。 代理
您須要爲如下類別啓用日誌記錄 : 日誌
org.hibernate.SQL
設置爲debug
以在執行全部SQL DML語句時記錄它們 org.hibernate.type
設置爲trace
以記錄全部JDBC參數 所以,log4j配置以下所示: code
# logs the SQL statements log4j.logger.org.hibernate.SQL=debug # Logs the JDBC parameters passed to a query log4j.logger.org.hibernate.type=trace
第一個等效於hibernate.show_sql=true
legacy 屬性 ,第二個等效於打印綁定參數。 orm
另外一個解決方案(基於非休眠)將使用JDBC代理驅動程序,如P6Spy 。
若是您使用的是休眠3.2.xx,請使用
log4j.logger.org.hibernate.SQL=trace
代替
log4j.logger.org.hibernate.SQL=debug