升级Spring Boot 3后Hibernate 6中SingularAttributePath引用异常咨询
Hibernate 6中SingularAttributePath的替代方案
你遇到的问题源于org.hibernate.query.criteria.internal.path.SingularAttributePath是Hibernate的内部实现类,不属于公开API范畴。Hibernate 6对Criteria API的内部结构做了重构,同时配合Jakarta Persistence API的升级(从javax.persistence迁移到jakarta.persistence),这个内部类已被移除或变更了包路径,导致无法解析引用。
正确解决方案:使用JPA标准接口
直接替换为JPA规范定义的公开接口jakarta.persistence.criteria.SingularAttributePath,这是所有JPA实现(包括Hibernate 6)都遵循的标准接口,不存在内部实现变更导致的兼容性问题。
修改后的代码示例:
import jakarta.persistence.criteria.SingularAttributePath // ... val expression = getMethod.invoke(root, filterCriteria.field) as SingularAttributePath<*>
关于Hibernate 6的内部实现(不推荐使用)
如果因特殊需求必须引用Hibernate的内部实现类,当前Hibernate 6.1.x版本中对应的内部实现是org.hibernate.query.criteria.path.SingularAttributePathImpl。但需要注意:这类内部类没有公开的兼容性承诺,后续版本随时可能调整,强烈不建议在业务代码中直接依赖。
内容的提问来源于stack exchange,提问作者venkata sairam
相关产品推荐
相关产品推荐

