Frage

Ich habe eine Java-Klasse (Entity) mit einem Satz von benannten Abfragen. Wenn der Frühling die damit verbundene Bohne zu injizieren versucht, ist es nicht eine der Abfragen zu finden.

Als Beispiel:

@NamedQueries({
        @NamedQuery(name = "Query1", query = "..."),
        @NamedQuery(name = "Query2", query = "..."),
        @NamedQuery(name = "Query3", query = "..."),
        @NamedQuery(name = "Query4", query = "..."),
        @NamedQuery(name = "Query5", query = "...")
})

Wenn der Frühling versucht die Bohne zu injizieren, ich bin immer:

org.springframework.beans.factory.BeanCreationException: Error creating bean
with name 'myBean': Injection of resource methods failed;nested exception is
java.lang.IllegalArgumentException: Named query not found: Query3 at ...

Ich bin sicher, dass die Anfragen korrekt sind (alle Unit-Tests für sie vorbei).

Weiß jemand, die Ursache dafür?

War es hilfreich?

Lösung 2

Nun, bekam Ive den Fehler. Was geschieht ist wie folgt:

In meiner Klasse gab es ein Verfahren mit @Resource kommentierte, die die benannte Abfrage genannt in einer anderen Klasse deklariert mit @Entity kommentierten).

Also, wenn einspritzt Frühling und das Verfahren läuft, versucht es die benannte Abfrage zu verwenden. Allerdings ist die Abfrage nicht ‚bereit‘ verwendet werden, und die Ausnahme throwed ist, dass die Abfrage wurde nicht gefunden.

Um dies zu lösen, ich habe eine andere Methode aufgerufen laufen, wenn die Feder Injektionen fertig sind, dh meine Klasse hat die Schnittstelle org.springframework.context.ApplicationListener und die Methode onApplicationEvent wartet auf eine org.springframework.context implementieren .event.ContextRefreshedEvent Ereignis.

Das ist alles Jungen. Vielen Dank Bozho für Ihre Hilfe.

Andere Tipps

  • Stellen Sie sicher, Entität abgebildet / gescannt wurde. Ist es mit @Entity kommentiert, ist es die persistence.xml oder die zuständige Provider-Konfiguration hinzugefügt oder wird sie automatisch gescannt werden.

  • würde ich den Namen der Klasse zu dem Abfrage-Präfix - d. H MyEntity.Query1, MyEntity.Query1 etc

  • prüfen, ob es nicht Bereitstellungsfehler ist - das heißt, dass Ihre Abfrage richtig ist

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top