SHOW_SQL获得HIBERNATE生成的SQL中,update/insert语句中的value被替换成“?”,昨天得本论坛高人指点用p6spy解决了此问题,特将解决之道回馈本论坛,以答谢Quake Wang。
开发环境:tomcat 4.1.24 + oracle 9i
注:p6spy.jar及spy.properties可以从www.p6spy.com下载
1、将p6spy.jar、commons-logging.jar、log4j-1.2.8.jar拷贝到WEB-INF\lib下
2、将spy.properties拷贝到WEB-INF\classes下
3、修改JDBC连接,在HIBERNATE与JDBC驱动之间插入p6spy,方便获得SQL语句
1)由oracle.jdbc.driver.OracleDriver为com.p6spy.engine.spy.P6SpyDriver
2)修改spy.properties样本的第41行,使用ORACLE驱动,封闭缺省的MYSQL驱动:
# oracle driver
realdriver=oracle.jdbc.driver.OracleDriver
3)修改spy.properties样本的第54行,封闭缺省的MYSQL驱动:
# the mysql open source driver
# realdriver=org.gjt.mm.mysql.Driver
4)修改spy.properties样本的第168行,将spy.log放到比较好找的位置:
logfile = E:/spy.log
重新启动tomcat,E:/SPY.LOG可以看到hibernate生成的带值的SQL。