我正在构建一个在Weblogic 12c(EE 6)中运行的Web项目,是一个Web App,我用以下项目配置了项目:
JSF 2 + EJB 3 + Spring Data
我有一些这样的回购:
public interface ColectorRepository extends JpaRepository<PEBTable, Integer>{
@Query("select t from PEBTable t where t.id >= ?1 and t.id <= ?2")
public List<PEBTable> findByRange(Integer a, Integer b);
}
我也有这种方式在EJB中调用repo,我没有问题这样调用它,它工作正常,我喜欢它:
@Stateless
public class PEBGenericParser implements PEBGenericParserLocal {
@PersistenceContext(unitName = PEBCons.PEB_PU)
private EntityManager emPeb;
@Override
public List<PEBTable> getData() {
JpaRepositoryFactory jrf = new JpaRepositoryFactory(emPeb);
ColectorRepository repo = jrf.getRepository(ColectorRepository.class);
return repo.findAll();
};
}
我在找什么?好吧,我想以一种优雅的方式调用存储库,使用CDI注释,Spring注释或其他避免使用spring xml(spring-config.xml等)的东西,我喜欢Spring数据,但我更愿意避免所有那些xml配置,只是像我一样保留我的persistence.xml。
我想这样做,如:
@Stateless
public class PEBGenericParser implements PEBGenericParserLocal {
@PersistenceContext(unitName = PEBCons.PEB_PU)
private EntityManager emPeb;
@Inject
private ColectorRepository repo;
@Override
public List<PEBTable> getData() {
return repo.findAll();
};
}
我将不胜感激任何建议。
答案 0 :(得分:0)
要在Java EE环境中完成此工作,您需要配置CDI容器以提供访问容器管理的EntityManager的方法。
这可以通过以下简单的配置类来完成:
public class CdiConfig {
@Produces
@Dependent
@PersistenceContext(unitName = "db_unit")
public EntityManager entityManager;
}