В моем приложении Spring + JPA / Hibernate + Wicket у меня есть bean-компонент QueryBuilder, который я хочу использовать в одном из моих DAO, который генерирует типизированный запрос с помощью API Criteria:
@Service(value="inboxQueryBuilder")
public class InboxQueryBuilder {
@PersistenceContext
EntityManager em;
CriteriaBuilder cb;
public InboxQueryBuilder() {
cb = em.getCriteriaBuilder();
}
public TypedQuery<App> getQueryForApps(AppSearchObject aso) {
...
}
...
}
Однако, когда я запускаю приложение, я получаю исключение нулевого указателя для строки:
cb = em.getCriteriaBuilder();
т.е. EntityManager не вводится. Ты знаешь почему?
Кроме того, является ли это использование правильным и поточно-ориентированным, или мне следует создавать экземпляр InboxQueryBuilder для каждого запроса? В этом случае я должен также внедрить EntityManager или просто передать его в качестве параметра конструктора (экземпляр InboxQueryBuilder будет создаваться для каждого запроса в DAO, в котором есть внедренный экземпляр EntityManager)?