项目使用 springboot 的 1.5.19 版本进行开发,里面使用到 JPA,而 springboot 这个版本自带的 JPA 实现是 Hibernate 的 5.0.12 版本。
这个版本里面的延迟加载是没有问题的,当你设置 fetch = FetchType.LAZY 时,关联的对象在你没有使用的时候,是不会发出 sql 的。
但升级了 springboot 的 2.1.3 后,依赖的 Hibernate 已经去到 5.3.7 版本了。这时候延迟加载就失效了,就算只是查询一个字段,也会再发多一条关联对象的 SQL 出来。
这个问题,在升级 Hibernate5.4.2 版本后是解决了的。
而对于使用 springboot 2.1.3 的话,需要先排除掉 spring 自身加载的 Hibernate 版本,自己替换成 Hibernate5.4.2 版本才可以。
不知道有没有人遇到这问题,本人测试,Hibernate5.2.x 时候就已经出现了,但好像一直没有修复。