Spring Boot升级后Hibernate CriteriaBuilder类型转换失效问题咨询
问题:Hibernate小版本升级后Integer列Like查询失效原因分析
场景说明
- 版本变更:Spring Boot从3.3.5升级至3.5.3,底层Hibernate随之从6.5.3.Final升级到6.6.18.Final
- 原有可正常运行的代码:
criteriaBuilder.like(idPath.as(String.class), "%" + term + "%"))
该代码用于对Integer类型列执行SQL Like查询。
- 升级后问题:Hibernate 6.6.18.Final生成的SQL不再包含类型转换逻辑,数据库报错提示无法对Integer列执行Like查询。
- 临时解决方案:
Expression<String> kundeId = criteriaBuilder.function("someFunctionName", String.class, root.get("id")); return criteriaBuilder.like(kundeId, "%" + term + "%");
核心疑问
为何小版本升级后必须修改原有实现?这是Hibernate的Bug,还是我遗漏了更新日志中的相关变更?毕竟小版本升级理论上不应包含破坏性变更。
内容的提问来源于stack exchange,提问作者GJohannes
相关产品推荐
相关产品推荐

