我只是努力實現一個基本的web應用Spring + Hibernate的EntityManager的的EntityManager由Spring注入,但空在第一次使用
設置我的刀和上下文完全按照這個帖子描述: http://blog.springsource.com/2006/08/07/using-jpa-in-spring-without-referencing-spring/
併爲其創建了一個測試,如下所示: http://lstierneyltd.com/blog/development/examples/unit-testing-spring-apps-with-runwithspringjunit4classrunner-class/
由於某些原因,當我試圖訪問entitymanager來創建查詢時,它的null。
但是,從entitymanager的setter方法內部設置斷點,我可以看到Spring正在注入它,並且該字段正在初始化。
任何線索爲什麼在setter返回後entitymanager可能會被取消?
編輯: 的DAO代碼我在哪裏設置斷點:
public class ProductDaoImpl implements ProductDao {
private EntityManager entityManager;
@PersistenceContext
public void setEntityManager(EntityManager entityManager) {
this. entityManager = entityManager;
}
public Collection loadProductsByCategory(String category) {
return entityManager.createQuery("from Product p where p.category = :category")
.setParameter("category", category).getResultList();
}
}
閱讀更多關於交易的測試可以請我們請參閱試圖使用實體管理器的代碼。你確定當你斷點setter時你正在看同一個對象實例嗎? –
@Alex我添加了上面的代碼,我在setEntityManager()中設置了斷點。本地(this.entityManager)爲空,但它所設置的參數值已正確初始化。然而,當我在loadProductsByCategory()方法內部破解時,局部變量回到null –
我們是否還可以看到正在使用此DAO的測試? –