EntityManager-injection - NullPointerException

In meinem Spring+JPA/Hibernate+Wicket-app, ich habe einen QueryBuilder-bean, die ich verwenden möchte in einem meiner DAOs erzeugt eine typisierte Abfrage mit Hilfe von Kriterien API:

@Service(value="inboxQueryBuilder")
public class InboxQueryBuilder {

    @PersistenceContext
    EntityManager em;

    CriteriaBuilder cb;

    public InboxQueryBuilder() {
        cb = em.getCriteriaBuilder();
    }

    public TypedQuery<App> getQueryForApps(AppSearchObject aso) {
           ...
    }

    ...
}

Jedoch, wenn ich die app starte, bekomme ich eine null-Zeiger-Ausnahme für Zeile:

cb = em.getCriteriaBuilder();

d.h. der EntityManager nicht injiziert. Wissen Sie, warum?

Außerdem ist dieser Einsatz richtig und thread-sicher oder sollte instanziieren ich meine InboxQueryBuilder für jede Abfrage? In diesem Fall, sollte ich auch Spritzen den EntityManager oder sollte ich einfach übergeben Sie es als parameter des Konstruktors (den InboxQueryBuilder bekommen würde, instanziiert für jede Abfrage in der DAO, die hat injizierten EntityManager-Instanz)?

Wie schaffen Sie InboxQueryBuilder?
in dem gegebenen Beispiel, es ist eine spring bean. aber ich weiß nicht, ob es ein singleton ist, ist gut.
Keine singletons verwenden, die in einem spring-Projekt. Nutzen spring, singleton-beans statt.

InformationsquelleAutor John Manak | 2010-11-09

Schreibe einen Kommentar