升级Hibernate至6.2.7后遇CDI依赖缺失错误求助
解决CDI依赖缺失问题
问题根源
你的MapStruct映射器使用了componentModel = MappingConstants.ComponentModel.CDI,但项目依赖中未引入CDI相关库,同时项目已引入Spring Context,更适配Spring组件模型。
解决方案
方案1:改用Spring组件模型(推荐)
修改映射器的@Mapper注解,将组件模型切换为Spring:
@Mapper(unmappedTargetPolicy = ReportingPolicy.IGNORE, componentModel = MappingConstants.ComponentModel.SPRING) public interface UserAdminUsersEntityMapper { // 原有代码保持不变 }
这样MapStruct会生成Spring的@Component类,直接与现有Spring环境兼容,无需额外添加依赖。
方案2:添加CDI依赖(若必须使用CDI)
如果确实需要使用CDI组件模型,在build.gradle的dependencies块中添加Jakarta CDI API依赖:
implementation 'jakarta.enterprise:jakarta.enterprise.cdi-api:4.0.1'
Hibernate 6.x基于Jakarta EE规范,需使用Jakarta命名空间的CDI依赖,而非旧的javax版本。
额外优化建议
- 移除
dependencies中重复声明的MapStruct依赖:// 删除重复的该行配置 // implementation 'org.mapstruct:mapstruct:1.5.5.Final' - 移除
jar块中手动指定的Class-Path属性,Gradle会自动管理依赖路径,手动指定易出现版本不一致问题(当前Class-Path中的hibernate-core版本为5.4.11.Final,与实际使用的6.2.7.Final冲突)。
内容的提问来源于stack exchange,提问作者Ram
相关产品推荐
相关产品推荐

