Dans mon printemps + app JPA/Hibernate + Wicket, j'ai un grain de QueryBuilder que je veux utiliser dans un de mes OTI qui génère une requête typée avec l'aide de l'API Critères:injection EntityManager - NullPointerException
@Service(value="inboxQueryBuilder")
public class InboxQueryBuilder {
@PersistenceContext
EntityManager em;
CriteriaBuilder cb;
public InboxQueryBuilder() {
cb = em.getCriteriaBuilder();
}
public TypedQuery<App> getQueryForApps(AppSearchObject aso) {
...
}
...
}
Cependant, quand je lance l'application, je reçois une exception de pointeur nul pour la ligne:
cb = em.getCriteriaBuilder();
-à-dire la EntityManager ne se laisse pas injecté. Est-ce que tu sais pourquoi?
De même, cette utilisation est-elle correcte et thread-safe ou devrais-je instancier mon InboxQueryBuilder pour chaque requête? Dans ce cas, devrais-je également injecter l'EntityManager ou devrais-je simplement le passer comme un paramètre constructeur (InboxQueryBuilder serait instancié pour chaque requête dans le DAO qui a une instance injectée d'EntityManager)?
Comment créez-vous InboxQueryBuilder? – willcodejavaforfood
dans l'exemple donné, c'est un haricot de printemps. mais je ne sais pas si en faire un singleton est bon. –
N'utilisez pas de singletons dans un projet de ressorts. Utilisez plutôt des haricots singleton printaniers. –