2016-10-31 68 views
-3

这里是我的仓库@Autowired返回null

@Service 
public class FuneralPricingRepository { 

    @PersistenceContext 
    private EntityManager em; //this is null 

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

AS400calls被自动连接,但funeralPricingRepository不是。

public class TestFuneralPremiumProvider implements TestHandler { 

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

    @Autowired 
    private FuneralPricingRepository funeralPricingRepository; //this is null 

请帮助...

+0

检查注释@Component或声明bean是'FuneralPricingRepository'的包是'componentscan'路径? – D0dger

+0

'@ Autowired'不能为空。如果无法解决依赖关系,您的应用程序将会崩溃。如果情况并非如此,那么您不使用自动布线或自己构建'TestFuneralPremiumProvider'的实例。 –

回答

0

不允许你注入EntityManager这种方式。改为注入EntityManagerFactory。那么两次注射都应该有效。

实体管理器只能在事务内部运行的类中注入。换句话说,它只能被注入到EJB中。其他类必须使用EntityManagerFactory来创建和销毁EntityManager。

- Source

是您Repository在componentscan路径的包?如果还没有,请添加

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

另一件事是您的存储库。什么原因不使用Spring Data JPA?只需扩展CRUDRepository,即可免费获得findAll等一些方法。

0

我想在这个

TestFuneralPremiumProvider 

问题,而在配置

+1

为什么'As400Calls'不为空呢? – dit