这是我的存储库
@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 :(得分: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