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

Hibernate ReturningWork生成的SQL无法打印,该如何配置?

如何打印Hibernate ReturningWork执行的SQL语句

由于ReturningWork直接使用底层JDBC连接执行SQL,并未经过Hibernate的SQL拦截逻辑,因此仅配置org.hibernate.SQL为INFO无法捕获这些SQL。你可以通过以下两种方式实现日志打印:

方式一:启用JDBC驱动的日志

不同数据库驱动对应不同的日志包,配置DEBUG级别即可打印所有JDBC操作:

  • MySQL:
    在Spring Boot的application.properties中添加:
    logging.level.com.mysql.cj.jdbc=DEBUG
    
    (旧版驱动用com.mysql.jdbc)
  • PostgreSQL:
    logging.level.org.postgresql=DEBUG
    
    这种方式会输出驱动层面的所有细节,包括SQL语句、参数绑定、连接状态等。

方式二:使用数据源代理(更简洁可控)

通过datasource-proxy代理数据源,统一拦截所有JDBC操作,包括ReturningWork中的SQL:

  1. 添加Maven依赖:
    <dependency>
        <groupId>net.ttddyy</groupId>
        <artifactId>datasource-proxy</artifactId>
        <version>1.7</version>
    </dependency>
    
  2. 创建数据源代理配置类:
    import net.ttddyy.dsproxy.support.ProxyDataSourceBuilder;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import javax.sql.DataSource;
    
    @Configuration
    public class DataSourceProxyConfig {
        @Bean
        public DataSource dataSource(DataSource originalDataSource) {
            return ProxyDataSourceBuilder
                    .create(originalDataSource)
                    .logQueryBySlf4j()
                    .build();
        }
    }
    
  3. 配置日志级别:
    logging.level.net.ttddyy.dsproxy=INFO
    
    这样就能干净地输出所有执行的SQL语句,不会包含过多冗余信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 18:52:40