2016-10-31 3 views
-3

вот мой Repository@Autowired возвращает нулевое значение

@Service 
public class FuneralPricingRepository { 

    @PersistenceContext 
    private EntityManager em; //this is null 

    public List<FuneralPricing> findAll() { 
     return this.em.createNativeQuery("SELECT * FROM FUNERALPRICING").getResultList(); 
    } 
} 

AS400calls является autowired но funeralPricingRepository нет.

public class TestFuneralPremiumProvider implements TestHandler { 

    @Autowired 
    private As400Calls as400Calls; //this is not null 

    @Autowired 
    private FuneralPricingRepository funeralPricingRepository; //this is null 

Пожалуйста, помогите ...

+0

Check является пакет 'FuneralPricingRepository' в' componentscan' пути? – D0dger

+0

'@ Autowired' не может быть' null'. Если зависимость не может быть решена, ваше приложение взорвется. Если это не так, вы не используете автоматическую проводку или сами создаете экземпляр 'TestFuneralPremiumProvider'. –

ответ

0

Вам не разрешено вводить EntityManager таким образом. Вместо этого вводится EntityManagerFactory. Тогда обе инъекции должны работать.

Администратор сущности может вводиться только в классы, запущенные внутри транзакции. Другими словами, его можно вводить только в EJB. Другой класс должен использовать EntityManagerFactory для создания и уничтожения EntityManager.

- Source

Является ли ваш Repository в пакете в componentscan пути? Если еще нет, добавьте

@ComponentScan("com.my.package.where.repository.is") 

Другое дело в вашем репозитории. В чем причина не использовать Spring Data JPA? Просто добавьте CRUDRepository и вы получите findAll и еще несколько методов бесплатно.

0

Я думаю, что проблема в этом

TestFuneralPremiumProvider 

без аннотаций @Component или объявлении бина в конфигурационном

+1

Почему «As400Calls» не является нулевым? – dit

Смежные вопросы