You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot中Hibernate日志仅显查询语句无映射值的原因及解决求助

解决Hibernate日志不显示参数值的问题

核心配置要求

要同时显示SQL语句和对应的参数绑定值,需配置两个关键日志项:

  • 将org.hibernate.SQL日志级别设为DEBUG,用于输出SQL语句
  • 将org.hibernate.type.descriptor.sql.BasicBinder日志级别设为TRACE,用于输出参数的实际绑定值(Hibernate 5.x及以上版本适用,老版本可替换为org.hibernate.type)

不同日志框架的配置示例

Logback(logback.xml)

<configuration>
    <!-- 控制台输出Appender,按需配置 -->
    <appender name="Console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- Hibernate SQL日志 -->
    <logger name="org.hibernate.SQL" level="DEBUG" />
    <!-- 参数绑定日志 -->
    <logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="TRACE" />

    <root level="INFO">
        <appender-ref ref="Console" />
    </root>
</configuration>

Log4j2(log4j2.xml)

<Configuration status="WARN">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"/>
        </Console>
    </Appenders>
    <Loggers>
        <Logger name="org.hibernate.SQL" level="DEBUG" additivity="false">
            <AppenderRef ref="Console"/>
        </Logger>
        <Logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="TRACE" additivity="false">
            <AppenderRef ref="Console"/>
        </Logger>
        <Root level="INFO">
            <AppenderRef ref="Console"/>
        </Root>
    </Loggers>
</Configuration>

Spring Boot项目(application.yml)

logging:
  level:
    org.hibernate.SQL: DEBUG
    org.hibernate.type.descriptor.sql.BasicBinder: TRACE
  pattern:
    console: "%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"

常见误区排查

  • 不要仅依赖hibernate.show_sql=true:这个参数只是直接将SQL打印到控制台,不会通过日志框架输出参数值,必须配合上述日志级别配置
  • 检查全局日志级别:如果全局日志级别设为INFO或更高,会覆盖子Logger的TRACE/DEBUG设置,确保全局级别不高于DEBUG
  • 确认配置文件路径:确保日志配置文件放在项目src/main/resources根目录下,被应用正确加载
  • 老版本Hibernate适配:如果使用Hibernate 4.x及更早版本,将BasicBinder替换为org.hibernate.type

验证生效

重启应用后执行插入操作,查看日志中是否出现类似binding parameter [1] as [VARCHAR] - [实际业务值]的条目,即可确认参数值已正常输出。

内容的提问来源于stack exchange,提问作者DevJWP

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 19:12:20