Hibernate显示真正的SQL [重复]

问题

这个问题在这里已有答案:

  • 使用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