Spring Boot 3升级后Hibernate内部Criteria相关类缺失问题咨询
这些类都是Hibernate的内部API(包路径包含internal),Hibernate官方从未承诺过内部API的兼容性,升级时出现找不到的情况属于正常的重构行为,具体变更如下:
org.hibernate.query.criteria.internal.CriteriaBuilder
该内部实现类已被重构,你应该直接使用JPA标准的jakarta.persistence.criteria.CriteriaBuilder(Spring Boot 3基于Jakarta EE,替代原Javax包),这是标准公开API,不受Hibernate版本变更影响。org.hibernate.query.criteria.internal.ParameterRegistry
该内部接口已被移除。如果之前用于参数注册逻辑,可切换到JPA标准的CriteriaQuery、Query接口管理参数,或使用Hibernate 6公开的org.hibernate.query.criteria.JpaCriteriaQuery相关API处理。org.hibernate.query.criteria.internal.Renderable
该内部渲染接口已被重构,相关逻辑整合到了新的内部实现中。如果需要自定义SQL渲染,应依赖Hibernate公开的扩展点,比如org.hibernate.query.criteria.spi.CriteriaNode或SqlAstTranslator系列公开API,不要直接依赖内部类。org.hibernate.query.criteria.internal.compile.RenderingContext
该内部上下文类已被重构拆分,功能转移到多个新的内部类中(如org.hibernate.query.sqm.internal.DomainParameterXref等),但这些仍属于内部API,不建议直接使用。
核心建议
永远避免直接依赖Hibernate的internal包下的类/接口,优先使用JPA标准API(jakarta.persistence.criteria包路径)或Hibernate官方明确标注为公开的扩展API,这样能大幅提升版本升级时的兼容性。如果之前基于这些内部类做了自定义扩展,建议迁移到Hibernate 6提供的公开扩展机制(如自定义SQM转换、SQL翻译器)。
内容的提问来源于stack exchange,提问作者vaps

