小编Car*_*ary的帖子

JBoss EAP 7.1 Spring-Data-JPA CDI 扩展

我们有一个使用 Spring Data JPA 存储库注入 EJB 的应用程序。春天org.springframework.data.jpa.repository.cdi.JpaRepositoryExtension有魔力。

它在 CDI 中查找 EntityManager,保存它以供以后使用,使用注释查找 Spring Data JPA 存储库@Repository,并保存它们的类型以供以后使用。当 CDI 初始化时,JpaRepositoryExtension::afterBeanDiscovery运行并执行正确的 bean 创建并将其插入到 CDI 中。这在 JBoss EAP 6.2/6.3/6.4 下完美运行。

JBoss EAP 7.1 基于 WildFly 11 构建,Hibernate 版本现在为 5.1。JPA 引导代码已在 JBoss 和 Hibernate JPA 提供程序中进行了重组。由于这种重组,EntityManager在运行时不在CDI 中:

org.springframework.data.jpa.repository.cdi.JpaRepositoryExtension.processBean(ProcessBean<X>)
Run Code Online (Sandbox Code Playgroud)

这最终导致...

org.springframework.data.jpa.repository.cdi.JpaRepositoryExtension.createRepositoryBean(Class<?>, Set<Annotation>, BeanManager)
Run Code Online (Sandbox Code Playgroud)

...抛出:

javax.enterprise.inject.UnsatisfiedResolutionException:无法使用限定符 [@javax.enterprise.inject.Default()、@javax.enterprise.inject.Any()] 解析“javax.persistence.EntityManager”的 bean。在 org.springframework.data.jpa.repository.cdi.JpaRepositoryExtension.createRepositoryBean(JpaRepositoryExtension.java:120) 在 org.springframework.data.jpa.repository.cdi.JpaRepositoryExtension.afterBeanDiscovery(JpaRepositoryExtension.java:96)


有没有人成功地将 Spring Data JPA 部署到 JBoss EAP 7.1 或 WildFly 11+ 上并获得在 CDI 中创建的 JPA 存储库?

编辑:我有一个在 EAP 6.2/3/4 …

spring hibernate jpa spring-data-jpa jboss-eap-7

5
推荐指数
1
解决办法
1755
查看次数

标签 统计

hibernate ×1

jboss-eap-7 ×1

jpa ×1

spring ×1

spring-data-jpa ×1