当前位置: 首页 > 知识库问答 >
问题:

无法在Java EE 7堆栈上获取Spring数据JPA+CDI

荣俊
2023-03-14

我正在尝试让Spring data JPA与EJB和CDI(Java EE 7)一起工作。嗯,我遵循了文档(http://docs.spring.io/spring-data/jpa/docs/1.4.2.release/reference/html/jpa.repositories.html#jpd.misc.cdi-integration),但仍然无法将我的存储库注入到无状态EJB中。代码如下:

@Configuration
@EnableJpaRepositories
public class EntityManagerFactoryProducer {

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

public void close(@Disposes EntityManagerFactory entityManagerFactory) {
    entityManagerFactory.close();
}
}
public interface TipoFolhaRepository extends JpaRepository<TipoFolha, Long> {

List<TipoFolha> findByNome(String nome);

TipoFolha findByTipo(String tipo);
}
@Stateless
public class TipoFolhaFacade extends AbstractFacade<TipoFolha> {

@Inject
TipoFolhaRepository tpRepo;

@Override
public  List<TipoFolha> findAll(){
    return tpRepo.findAll();
}
}

共有1个答案

龙焱
2023-03-14

您需要在存储库类所在的模块中使用bean-discovery-mode=“all”启用CDI。这意味着在META-INF文件夹中创建一个beans.xml,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
       http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
       bean-discovery-mode="all">
</beans>

关于不同发现模式的简短解释可以在此Oracle博客帖子中找到

 类似资料:
  • 我已经使用netbeans(8.0.2)中的持久性单元向导创建了数据源。但在glassfish上运行项目时,它找不到我的数据源。 例外情况 我正在使用EclipseLink JPA 2.1

  • 我有一个名为appconfig.XML的spring XML配置文件,它包含一个数据源bean和另一个将数据源作为参数传递给它的JDBCtemplate: 我得到一个错误: 线程“main”org.springframework.beans.factory.BeanCreationException中出现异常:创建文件[appconfig.xml]中定义的名为“jdbcTemplate”的bean

  • 我有用户表,列id, mname, firstname, lastname, age(5列)使用Spring data jpa我只需要获取id, firstname, age(只有3列) 实用性低于user.java UserRepository.java 在科尔索勒中收到以下错误: org.springframework.core.convert.ConverterNotFoundExcepti

  • 我是Thymeleaf的新手,我尝试使用Thymeleaf和Spring MVC执行一个简单的表单提交示例。我根据Thymeleaf留档编写了代码。但是我在控制器中得到空值。 我的控制器是 我的模型课是

  • 我在我的项目中使用Spring Data JPA和Hibernate JPA提供程序。在我的服务中,我有一个方法,它将一个实体保存在数据库中,而不是使用返回的对象,我试图获取关于该实体的更多细节。因此,无法获取详细信息。在日志中,我只看到insert语句,而没有select详细信息。 下面是我的代码: 更新:我从服务和测试中删除了@Transactional annotaion。现在,当我保存一个

  • 通过使用JMockit@Capture,它无法捕获对任何Spring数据jpa存储库方法的调用。 然而,通过替换 用户存储库 具有 代码库 在测试类中,JMockit能够拦截对JpaRepository接口中可用的任何方法的调用,如findOne()或findAll()。 但它无法捕获对扩展JpaRepository的自定义存储库方法的调用,比如findByName()。 尽管基于JMockit状