Quarkus集成Hibernate Reactive构建时datasource-cis持久化单元不识别问题
问题根因
从报错日志可以定位到两个核心配置缺失:
- 你配置了名为
datasource-cis的非默认持久化单元,但未给该单元开启Hibernate Reactive支持,也未配置实体扫描路径,导致框架无法将model.WorkOrder等实体类归属到该持久化单元下 - 你注入持久层实例时使用了默认的无注解注入方式,但项目不存在默认持久化单元,只有带
@PersistenceUnit("datasource-cis")限定符的持久化单元,因此触发依赖不满足错误
修复步骤
- 第一步:补全application.yml中的Hibernate配置
quarkus: hibernate-orm: "datasource-cis": # 配置实体类所在包,多包用逗号分隔 packages: model reactive: # 必须显式开启该持久化单元的Reactive支持 enabled: true
- 第二步:修改持久层实例注入代码,指定持久化单元
注意Hibernate Reactive场景下建议直接注入Reactive专属的SessionFactory,而非JPA标准的EntityManager,注入代码参考:
import io.quarkus.hibernate.orm.PersistenceUnit; import javax.inject.Inject; import org.hibernate.reactive.mutiny.Mutiny.SessionFactory; @Inject @PersistenceUnit("datasource-cis") SessionFactory sessionFactory;
- 第三步(使用Panache场景需额外配置):给实体类绑定持久化单元
在你的WorkOrder实体类上添加@PersistenceUnit注解:
import io.quarkus.hibernate.orm.PersistenceUnit; import javax.persistence.Entity; import io.quarkus.hibernate.reactive.panache.PanacheEntity; @Entity @PersistenceUnit("datasource-cis") public class WorkOrder extends PanacheEntity { // 实体属性逻辑 }
内容的提问来源于stack exchange,提问作者Espresso
相关产品推荐
相关产品推荐

