【问题标题】:Spring Hibernate show_sql not working [duplicate]Spring Hibernate show_sql 不工作 [重复]
【发布时间】:2015-07-30 09:18:52
【问题描述】:

我是春季的新手,所以这可能只是我在寻找,但我已经尝试了几个小时无济于事。我已经集成了 spring 和 hibernate 并且正在工作,但是我想将查询记录到一个文件中,以便我可以检查它们。我正在使用 log4j 进行日志记录,但问题是我无法休眠以写入文件,并希望得到一些澄清。

这是 applicationContext 中的 sessionFactory bean

<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop>
            <prop key="hibernate.show_sql">true</prop>
            <prop key="hibernate.format_sql">true</prop>
        </props>
    </property>
    <property name="packagesToScan" value="com.example"/>
</bean>

Log4j 配置

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"
debug="false">

<appender name="FILE" class="org.apache.log4j.RollingFileAppender">
    <param name="File" value="${catalina.home}/logs/my-log-file.log" />
    <param name="Append" value="true" />
    <param name="MaxFileSize" value="20MB" />
    <param name="MaxBackupIndex" value="2" />

    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d{DATE} %c | %msg %n" />
    </layout>
</appender>

<appender name="hibernate-rolling" class="org.apache.log4j.RollingFileAppender">
    <param name="File" value="${catalina.home}/logs/hib-example-file.log" />
    <param name="Append" value="true" />
    <param name="ImmediateFlush" value="true" />
    <param name="MaxFileSize" value="20MB" />
    <param name="MaxBackupIndex" value="2" />

    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d{DATE} %c | %msg %n"/> 
    </layout>
</appender>


<logger name="org.hibernate.SQL" additivity="false">
    <level value="debug" />
    <appender-ref ref="hibernate-rolling" /> 
</logger>


<root>
    <priority value="INFO"></priority>
    <appender-ref ref="FILE" />
</root>
</log4j:configuration>

非常感谢任何帮助?

编辑:

我已经尝试了link 中提供的记录器,但这并没有导致将查询写入文件。

【问题讨论】:

  • 将您的级别更改为 ALL 而不是调试。
  • 我也尝试添加所有这些记录器并更改了级别,但仍然没有更改。如果我将记录器更改为 org.hibernate 并将调试级别写入日志文件,但它有 2000 多行,其中没有一条是用于检索我需要的对象的查询。
  • org.hibernate.SQL 可以在我将级别设置为 ALL 时显示所有查询。愚蠢的问题,但是您是否正在为您的输出查看正确的文件(hib-example-file.log),并且您在更改配置后是否重新启动了应用程序?
  • 是的,我是。奇怪的是,当我在 Java Swing 应用程序中设置 log4j 和休眠时,我没有遇到任何问题。我基本上将 log4j.xml 复制到了 spring 项目并更改了文件位置,但我没有得到任何可以打印到日志文件的内容。
  • 我是个彻头彻尾的白痴,刚刚发布了我的问题,它与记录器无关。我忘记将表的 jpa 注释添加到模型中,因此从未调用过查询。奇怪的是没有抛出异常。我认为这样的事情会导致异常。感谢您的帮助,很抱歉浪费您的时间。

标签: java spring hibernate


【解决方案1】:

我错过了 Table JPA 注释,导致查询永远不会真正执行。因此,它没有记录它。添加了@Table(name = "My_Table") 并且成功了。

【讨论】:

    猜你喜欢
    • 2017-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-13
    • 1970-01-01
    • 1970-01-01
    • 2015-12-31
    • 1970-01-01
    相关资源
    最近更新 更多