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

Spring Boot项目Hibernate SQL参数日志不显示问题解决方案问询

修复方案

1. 修正Hibernate参数绑定日志配置

你当前配置的logging.level.org.hibernate.type.descriptor.sql=trace粒度不足,Spring Boot 2.0.x对应的Hibernate 5.x版本需要精确到参数绑定器的日志级别,在application.properties中将对应配置替换为:

# 输出SQL语句
logging.level.org.hibernate.SQL=DEBUG
# 输出SQL绑定的实际参数
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE

配置完成后控制台会按占位符顺序输出每个参数的类型和实际值。

2. 移除配置项前多余空格

你现有application.properties里的 spring.jpa.hibernate.ddl-auto=create-only行首多了一个空格,会导致该配置不生效,删除行首空格即可。

3. 排查自定义日志配置的过滤规则

如果修改后依然看不到参数,检查项目中是否存在logback.xml、log4j2.xml等自定义日志配置文件,确认没有对org.hibernate包下的TRACE级别日志做屏蔽,也没有将全局日志输出级别设置为高于TRACE。

4. 可选:使用p6spy直接输出完整可执行SQL

如果需要直接拿到拼接好参数、可以直接运行的完整SQL,不需要手动对照占位符匹配参数,可以引入p6spy组件:

  • 首先在pom.xml中添加依赖:
<dependency>
    <groupId>p6spy</groupId>
    <artifactId>p6spy</artifactId>
    <version>3.9.1</version>
</dependency>
  • 其次修改application.properties中的数据库连接配置:
# 数据库驱动替换为p6spy驱动
spring.datasource.driver-class-name=com.p6spy.engine.spy.P6SpyDriver
# 原有JDBC URL前加上p6spy前缀,示例如下
spring.datasource.url=jdbc:p6spy:h2:mem:db;DB_CLOSE_DELAY=-1
  • 最后在resources目录下新增spy.properties配置文件,基础配置如下:
module.log=com.p6spy.engine.logging.P6LogFactory
appender=com.p6spy.engine.spy.appender.StdoutLogger
logMessageFormat=com.p6spy.engine.spy.appender.SingleLineFormat

配置完成后启动项目,控制台会直接输出替换完所有占位符的完整可执行SQL。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 18:54:01