Question

J'ai une classe Java (entité) avec un ensemble de requêtes nommées. Lorsque le printemps tente d'injecter le grain lié, il ne trouve pas l'une des requêtes.

A titre d'exemple:

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

Quand le printemps tente d'injecter le haricot, je me fais:

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

je suis sûr que les requêtes sont corrects (tous les tests unitaires pour les passent).

Quelqu'un sait-il la cause racine pour elle?

Était-ce utile?

La solution 2

Eh bien, Ive a obtenu l'erreur. Ce qui se passait est la suivante:

Dans ma classe, il y avait une méthode annotée avec @Resource, qui a appelé la requête nommée a déclaré dans une autre classe annotée avec @Entity).

Alors, quand injecte printemps et exécute la méthode, il essaie d'utiliser la requête nommée. Toutefois, la requête n'est pas « prêt » à utiliser, et l'exception Throwed est que la requête n'a pas été trouvé.

Pour résoudre ce problème, je dois courir une autre méthode appelée lorsque les injections de printemps sont terminées, à savoir, ma classe doit implémenter l'interface org.springframework.context.ApplicationListener et attend la méthode de onApplicationEvent pour une org.springframework.context événement .event.ContextRefreshedEvent.

Thats tous les gars. Merci Bozho pour votre aide.

Autres conseils

  • assurez-vous que votre entité a été cartographié / numérisé. Est-il annotées avec @Entity, est-il ajouté à la persistence.xml ou à la configuration du fournisseur concerné, ou est-il automatiquement numérisé.

  • Je préfixe le nom de la classe à la requête -. MyEntity.Query1 dire, MyEntity.Query1 etc

  • vérifier s'il y a des erreurs non déploiement - à savoir que votre requête est correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top