Domanda

Ho una classe Java (Entity) con una serie di query denominate. Quando la primavera tenta di iniettare il relativo fagiolo, non è trovare una delle query.

A titolo di esempio:

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

Quando Primavera tenta di iniettare il fagiolo, sto ottenendo:

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 ...

sono sicuro che le query sono corretti (tutti i test di unità per loro sono di passaggio).

Qualcuno sa la causa principale per questo?

È stato utile?

Soluzione 2

Bene, Ive ha ottenuto l'errore. Quello che stava accadendo è la seguente:

Nella mia classe c'era un metodo annotato con @Resource, che ha chiesto la query denominata dichiarato in un'altra classe annotato con @Entity).

Così, quando inietta primavera ed esegue il metodo, si tenta di utilizzare la query di nome. Tuttavia, la query non e 'pronto' per essere utilizzato, e l'eccezione Throwed è che la query non è stato trovato.

Per risolvere questo, devo correre un diverso metodo chiamato quando le iniezioni molla sono finiti, cioè, la classe deve implementare l'interfaccia org.springframework.context.ApplicationListener e attende metodo onApplicationEvent per un org.springframework.context .event.ContextRefreshedEvent evento.

questo è tutto ragazzi. Grazie Bozho per il vostro aiuto.

Altri suggerimenti

  • assicurarsi che il soggetto è stato mappato / scansione. E 'annotato con @Entity, è aggiunto alla persistence.xml o per la configurazione del provider in questione, o è sottoposto a scansione automaticamente.

  • mi piacerebbe prefisso il nome della classe alla query -. Vale a dire MyEntity.Query1, MyEntity.Query1 etc

  • verificare se ci sono errori, non di implementazione - vale a dire che la query è corretto

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top