@Autowired返回null

时间:2016-10-31 07:12:07

标签: java spring-boot

这是我的存储库

@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

请帮忙......

2 个答案:

答案 0 :(得分:0)

你不能以这种方式注射EntityManager。而是注入EntityManagerFactory。然后两次注射都应该有效。

  

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

- Source

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

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

另一件事是你的存储库。不使用Spring Data JPA的原因是什么?只需延长CRUDRepository即可免费获得findAll和更多方法。

答案 1 :(得分:0)

我认为这个问题

TestFuneralPremiumProvider 

没有注释@Component或config

中的声明bean