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

Hibernate不显示SQL参数值,Spring Boot配置问题排查

问题

我有一个Spring Boot应用,application.properties配置如下:

spring.datasource.url=jdbc:h2:mem:testdb;INIT=CREATE SCHEMA IF NOT EXISTS TEST
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.show-sql=true
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.sql.init.mode=always
spring.jpa.hibernate.ddl-auto=update
spring.h2.console.enabled=true
spring.jpa.properties.hibernate.format_sql=true
server.port=8080
spring.jpa.defer-datasource-initialization=true

保存project.staff数据时,日志仅输出SQL框架,看不到参数:

Hibernate: 
    insert 
    into
        project.staff
        (school_name, tc) 
    values
        (?, ?)

但另一个保存price数据的API能正常输出参数绑定日志:

Hibernate: 
    insert 
    into
        price
        (brand_id, curr) 
    values
        (default, ?, ?, ?, ?, ?, ?, ?, ?)
2023-12-31 20:19:54.914 TRACE 47712 --- [           main] o.h.type.descriptor.sql.BasicBinder      : binding parameter [1] as [INTEGER] - [1]
2023-12-31 20:19:54.914 TRACE 47712 --- [           main] o.h.type.descriptor.sql.BasicBinder      : binding parameter [2] as [VARCHAR] - [EUR]

我尝试添加logging.level.org.hibernate.type=trace配置,但没有效果,检查application.properties也没发现配置差异,请问需要补充什么配置才能显示SQL参数日志?

解决方案
  • 直接在application.properties中添加更精准的日志级别配置:

    logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
    

    该配置针对负责参数绑定的核心类BasicBinder开启TRACE级别日志,比宽泛的org.hibernate.type配置更精准,能确保参数绑定日志正常输出。

  • 若上述配置无效,检查项目中是否存在logback.xml、log4j2.xml等自定义日志配置文件,确认这些文件没有将org.hibernate.type.descriptor.sql或BasicBinder的日志级别设置为TRACE以上(如INFO、WARN),避免覆盖Spring Boot的配置。

  • 若使用较旧的Hibernate版本,可尝试将配置改为:

    logging.level.org.hibernate.type=TRACE
    

    配置项的大小写不影响Spring Boot识别,但严格匹配格式更稳妥。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 04:36:19