【问题标题】:Hibernate-4 show SQL code that is generatedHibernate-4 显示生成的 SQL 代码
【发布时间】:2014-08-27 06:52:24
【问题描述】:

我在我的 Eclipse IDE 中创建了一个 Maven 项目并尝试编写简单的休眠程序。但我无法看到 hibernate 生成的最终查询,其中还包括绑定参数。

我也关注了这里提到的帖子:Hibernate show real SQL,但没有帮助。

我有以下配置:

在我的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.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.logger.net.sf.hibernate.type=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.xmllog4j.properties 都放置在路径:

MyProject/src/main/java/log4j.properties

但是当我运行一个小程序时,我仍然看不到休眠添加的绑定参数,我只看到以下结果:

Hibernate: 
    select
        this_.ID as ID1_0_0_,
        this_.NAME as NAME2_0_0_
    from
        MY_TABLE this_ 

我正在使用Hibernate-4.3

【问题讨论】:

    标签: java hibernate maven log4j


    【解决方案1】:

    pom.xml 中添加SLF4J 依赖项解决了我的问题:

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.6.6</version>
        </dependency>
    

    【讨论】:

      【解决方案2】:

      改变这一行:

      log4j.logger.net.sf.hibernate.type=debug
      

      到:

      log4j.logger.org.hibernate.type=trace
      

      你应该得到绑定参数。

      【讨论】:

      • @user2065083 我已经改变了我的答案。请再试一次。
      • 我的 log4j.properties 文件中已经有该设置 --> log4j.logger.org.hibernate.type=TRACE,现在我尝试仅删除行 log4j.logger.net.sf.hibernate.type=debug,输出仍然没有变化
      • 感谢 Jens 的支持,我的 pom.xml 依赖列表中没有 slf4j,所以没有选择 log4j.properties 文件。
      【解决方案3】:

      log4j.properties 文件必须位于以下目录:

      MyProject/src/main/resources/log4j.properties
      

      因此,log4j 将在类路径中找到此文件而无需任何额外配置。


      另请参阅Apache Maven 网页中的Introduction to the Standard Directory Layout

      您可能希望看到下一个问题:Logging server logs to one file and SQL logs to another

      【讨论】:

      • 感谢 Paul 的回答,我已经将它放在资源路径中,但输出仍然没有变化,这种方式不适合我。
      猜你喜欢
      • 2011-01-27
      • 2012-05-30
      • 2017-01-13
      • 2011-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-13
      • 1970-01-01
      相关资源
      最近更新 更多