gpt4 book ai didi

java - CDI 环境中的 Spring-Data-JPA?

转载 作者:行者123 更新时间:2023-11-30 08:19:13 25 4
gpt4 key购买 nike

有没有人尝试将 spring-data-jpa 与 java-ee 应用程序集成?我正在使用 glassfish3 作为应用程序容器。

我按照官方的 spring-data-jpa 教程创建了一个类:

public class EntityManagerFactoryProducer {

@Produces
@ApplicationScoped
public EntityManagerFactory createEntityManagerFactory() {
return Persistence.createEntityManagerFactory("myPU");
}

public void close(@Disposes EntityManagerFactory entityManagerFactory) {
entityManagerFactory.close();
}

@Produces
@RequestScoped
public EntityManager createEntityManager(EntityManagerFactory entityManagerFactory) {
return entityManagerFactory.createEntityManager();
}

public void close(@Disposes EntityManager entityManager) {
entityManager.close();
}
}

但是当我尝试部署我的应用程序时,出现异常:

Error occurred during deployment: Exception while preparing the app : Could not resolve a persistence unit corresponding to the persistence-context-ref-name [org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean/entityManager] in the scope of the module called [App]. Please verify your application.. Please see server.log for more details.
Command deploy failed.

我错过了什么?我还应该有另一个配置文件还是一些 xml 文件?

最佳答案

由于您在 Java EE 应用程序容器中,因此您不想创建自己的 Persistence 实例。您使用的 Spring Data 文档中的示例适用于没有内置 JPA 支持的 CDI 环境。 Glasfish 为您创建了 EntityManagerFactoryEntityManager。您只需将其重新发布为 CDI bean。因此,在您的情况下,重要的是使用文档中显示的第二个示例:

public class EntityManagerProducer {

@Produces
@RequestScoped
@PersistenceContext
private EntityManager entityManager;
}

关于java - CDI 环境中的 Spring-Data-JPA?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26973336/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com