Hibernate JpaRepository的findById方法对应SQL及过滤条件在哪查看
解答
findById 执行SQL的查看位置
你可以通过以下几种方式查看实际执行的SQL:
- 项目配置Hibernate日志打印(最常用)
如果你用的是Spring Boot框架,在application.properties配置文件中添加以下配置即可在控制台直接输出SQL及参数:
普通Hibernate项目可以在spring.jpa.show-sql=true spring.jpa.properties.hibernate.format_sql=true logging.level.org.hibernate.type.descriptor.sql.BasicBinder=tracehibernate.cfg.xml中添加配置:<property name="show_sql">true</property> <property name="format_sql">true</property> - 数据库端查询
Oracle端可以开启审计日志,或者直接查询V$SQL系统视图抓取最近执行的对应SQL语句。
findById 使用的过滤条件
findById是JpaRepository自带的默认实现,过滤规则如下:
- 核心过滤条件为匹配你
MyTableRacord实体类中被@Id注解标注的主键字段,最终生成的SQL结构为:
其中SELECT [所有实体映射字段] FROM [MyTableRacord对应Oracle表名] WHERE [主键字段名] = ??绑定的值就是你调用方法时传入的Long id参数。 - 如果你在实体类或者项目中配置了全局Hibernate过滤规则(比如
@Where注解、软删除过滤、多租户隔离规则等),这些规则的条件也会自动追加到WHERE子句中。
内容的提问来源于stack exchange,提问作者likejudo
相关产品推荐
相关产品推荐

