2015-08-28 4 views
0

Я строю веб-проект, выполняемый в Weblogic 12с (EE 6), представляет собой веб-приложение, я настроил проект с:Вводят Spring Data Repository в EJB

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, и у меня нет проблемы, чтобы назвать это таким образом, это работает отлично, и мне нравится его:

@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 или что-то еще, избегая использования springs 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

Не можете вы просто @Autowire это? – Raffaele

ответ

0

Чтобы сделать эту работу в среде Java EE, вам необходимо настроить контейнер CDI, чтобы предоставить вам доступ к управляемому контейнером EntityManager.

Это может быть достигнуто с помощью следующего простого класса конфигурации:

public class CdiConfig {  
    @Produces 
    @Dependent 
    @PersistenceContext(unitName = "db_unit") 
    public EntityManager entityManager;  
} 
Смежные вопросы