Joh*_*nak 3 java spring dao jpa criteria-api
在我的Spring + JPA/Hibernate + Wicket应用程序中,我有一个QueryBuilder bean,我想在我的一个DAO中使用它,它在Criteria API的帮助下生成一个类型查询:
@Service(value="inboxQueryBuilder")
public class InboxQueryBuilder {
@PersistenceContext
EntityManager em;
CriteriaBuilder cb;
public InboxQueryBuilder() {
cb = em.getCriteriaBuilder();
}
public TypedQuery<App> getQueryForApps(AppSearchObject aso) {
...
}
...
}
Run Code Online (Sandbox Code Playgroud)
但是,当我运行应用程序时,我得到一个行的空指针异常:
cb = em.getCriteriaBuilder();
Run Code Online (Sandbox Code Playgroud)
即EntityManager不会被注入.你知道为什么吗?
此外,这是正确的和线程安全的,还是我应该为每个查询实例化我的InboxQueryBuilder?在这种情况下,我是否还应该注入EntityManager或者我应该将它作为构造函数参数传递(InboxQueryBuilder将为DAO中的每个查询实例化,其中有一个注入的EntityManager实例)?
Chr*_*ach 10
您无法在构造函数中访问EntityManager.看看@ PostConstruct-Annotation
@Service(value="inboxQueryBuilder")
public class InboxQueryBuilder {
@PersistenceContext
EntityManager em;
CriteriaBuilder cb;
public InboxQueryBuilder() {
// em= null
}
@PostConstruct
public void toSomething(){
// em set by Container
cb = em.getCriteriaBuilder();
}
public TypedQuery<App> getQueryForApps(AppSearchObject aso) {
...
}
...
}
Run Code Online (Sandbox Code Playgroud)
编辑: 再次阅读你的帖子后,我开始变得不确定,如果我是对的.我知道JBoss中的Java EE-Dependency-Injection正如我所描述的那样工作,但我不确定spring-IOC.
| 归档时间: |
|
| 查看次数: |
12806 次 |
| 最近记录: |