2011-02-18 52 views
4

我正在開發一個hibernate控制檯應用程序,並參考此文章http://www.mkyong.com/hibernate/how-to-display-hibernate-sql-parameter-values-solution/來設置P6Spy以查看「(?)」的實際值是多少由Hibernate生成的SQL。在休眠應用程序中使用P6Spy攔截JDBC語句到數據庫

設置應該可以正常工作,因爲我可以在應用程序啓動期間看到P6Spy輸出的信息/調試消息。但是,之後,P6Spy似乎無法攔截任何JDBC語句。從休眠生成的日誌(例如:Hibernate: insert into Module (projectName, moduleName, projectId) values (?, ?, ?))中,可以確定JDBC語句已經發送到數據庫。

以下是我的設置:

的hibernate.cfg.xml

  • 已經指定使用P6SPY 司機:<property name="hibernate.connection.driver_class">com.p6spy.engine.spy.P6SpyDriver</property>
  • 已經開啓了 hibernate.show_sql屬性: <property name="hibernate.show_sql">true</property>

spy.properties

  • 已經改爲使用我的實際 數據庫的JDBC驅動程序,過濾器設置爲 假,includecategories已經 明確設置登錄任何東西。
module.log=com.p6spy.engine.logging.P6LogFactory 
realdriver=oracle.jdbc.driver.OracleDriver 
filter=false 
dateformat=yyyy.MM.dd HH:mm:ss 
excludecategories= 
includecategories=error, info, batch, debug,statement,commit,rollback,result 
appender=com.p6spy.engine.logging.appender.StdoutLogger 

難道我錯過任何重要的設置?

回答

0

最後,我放棄了P6Spy,因爲它是老庫,最新的版本是回到2003年我求助於使用其他類似的免費開放調用log4jdbc源攔截JDBC語句,請參閱this以獲取更多信息,如果您有興趣。

1

我從來沒有用過P6Spy,但是你可以得到綁定變量輸出到你的日誌。嘗試把它放在你的log4j.properties或xml文件中。

log4j.category.org.hibernate.type = DEBUG,CONSOLE

1

此類問題的常見原因是JDBC驅動程序在P6SpyDriver之前加載。你可以通過在spy.properties中設置deregisterdrivers = true來解決這個問題。

順便說一句 - 此問題已修復爲2.0-alpha-1。