问题
这个问题在这里已有答案:
- 使用Hibernate 27答案时如何打印带参数值的查询字符串
如果我订
<property name="show_sql">true</property>
在my中,在控制台的hibernate.cfg.xml配置文件中我可以看到SQL。
但它不是真正的SQL ...我能看到将直接传递给数据库的SQL代码吗?
例:
我懂了
select this_.code from true.employee this_ where this_.code=?
我可以看吗
select employee.code from employee where employee.code=12
therealSQL?
#1 热门回答(317 赞)
我可以看到(...)真正的SQL
如果你想看到直接发送到数据库的SQL(格式化为**,类似于你的例子的**),你将不得不使用某种类型的jdbc驱动代理,如P6Spy(或log4jdbc)。
或者,你可以启用以下类别的记录(在此处使用alog4j.properties
文件):
log4j.logger.org.hibernate.SQL=DEBUG
log4j.logger.org.hibernate.type=TRACE
第一个相当于hibernate.show_sql=true
,第二个打印绑定参数等。
###参考
- Hibernate 3.5核心文档3.5。记录
- Hibernate 4.1核心文档4.1。记录
#2 热门回答(195 赞)
log4j.properties
log4j.logger.org.hibernate=INFO, hb
log4j.logger.org.hibernate.SQL=DEBUG
log4j.logger.org.hibernate.type=TRACE
log4j.logger.org.hibernate.hql.ast.AST=info
log4j.logger.org.hibernate.tool.hbm2ddl=warn
log4j.logger.org.hibernate.hql=debug
log4j.logger.org.hibernate.cache=info
log4j.logger.org.hibernate.jdbc=debug
log4j.appender.hb=org.apache.log4j.ConsoleAppender
log4j.appender.hb.layout=org.apache.log4j.PatternLayout
log4j.appender.hb.layout.ConversionPattern=HibernateLog --> %d{HH:mm:ss} %-5p %c - %m%n
log4j.appender.hb.Threshold=TRACE
hibernate.cfg.xml
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<property name="use_sql_comments">true</property>
persistence.xml
一些框架使用288750692:
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
<property name="hibernate.use_sql_comments" value="true"/>
#3 热门回答(15 赞)
如果你已经可以看到正在打印的SQL,那意味着你在hibernate.cfg.xml中有以下代码:
<property name="show_sql">true</property>
要同时打印绑定参数,请将以下内容添加到log4j.properties文件中:
log4j.logger.net.sf.hibernate.type=debug