在Hibernate中是否可以用实际值而不是问号打印生成的SQL查询?
如果Hibernate API无法实现,您将如何建议使用实值打印查询?
#1楼
将hibernate.cfg.xml
更改为:
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<property name="use_sql_comments">true</property>
在“ log4j.properties”中包括log4j及以下条目:
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
#2楼
您可以将类别行添加到log4j.xml:
<category name="org.hibernate.type">
<priority value="TRACE"/>
</category>
并添加休眠属性:
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<property name="use_sql_comments">true</property>
#3楼
打开org.hibernate.type
Logger来查看实际参数如何绑定到问号。
#4楼
您需要为以下类别启用日志记录 :
-
org.hibernate.SQL
设置为debug
以在执行所有SQL DML语句时记录它们 -
org.hibernate.type
设置为trace
以记录所有JDBC参数
因此,log4j配置如下所示:
# 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 属性 ,第二个等效于打印绑定参数。
另一个解决方案(基于非休眠)将使用JDBC代理驱动程序,如P6Spy 。
#5楼
如果您使用的是休眠3.2.xx,请使用
log4j.logger.org.hibernate.SQL=trace
代替
log4j.logger.org.hibernate.SQL=debug
来源:oschina
链接:https://my.oschina.net/u/3797416/blog/3167818