我开发休眠控制台应用程序,并且是指本文http://www.mkyong.com/hibernate/how-to-display-hibernate-sql-parameter-values-solution/来设置P6SPY为了看到什么是实际值的“(?)”的由Hibernate生成的SQL。
设置应该可以正常工作,因为我可以看到P6Spy在应用程序启动期间输出的信息/调试消息。但是,之后,P6Spy似乎无法拦截任何JDBC语句。从hibernate生成的日志(例如:Hibernate: insert into Module (projectName, moduleName, projectId) values (?, ?, ?)
)中,可以确定JDBC语句已经发送到数据库。
以下是我的设置:
hibernate.cfg.xml中
<property
name="hibernate.connection.driver_class">com.p6spy.engine.spy.P6SpyDriver</property>
<property
name="hibernate.show_sql">true</property>
spy.properties
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 :(得分:1)
我从未使用过P6Spy,但您可以将绑定变量输出到您的日志中。尝试将它放在log4j.properties或xml文件中。
log4j.category.org.hibernate.type = DEBUG,CONSOLE
答案 1 :(得分:1)
此类问题的常见原因是在P6SpyDriver之前加载了JDBC驱动程序。您可以通过在spy.properties中设置deregisterdrivers = true来解决此问题。
BTW - 此问题已在2.0-alpha-1中修复。
答案 2 :(得分:0)
最后,我放弃P6Spy
,因为它是最新版本回到2003年的旧库。我使用另一个名为log4jdbc
的类似免费开源来拦截JDBC语句,请参阅this如果您有兴趣了解更多信息。