2010-08-02 27 views
1

Le titre n'est pas clair car je ne pouvais pas penser à un mais, j'ai un projet EJB et j'essaie de jouer avec JPA. Pour créer le gestionnaire d'entités j'injecter via annotationsEntity Manager/structure de fichier persistance

@PersistenceContext(unitName="testConnection") 
private EntityManager em; 

Quand je lance une requête de test que je crois être bien

Query userQuery = em.createQuery("SELECT u FROM TestUser u WHERE u.username = 'test' u.password = 'test'"); 
tu = (TestUser) userQuery.getSingleResult(); 

Je reçois une exception qui pointe vers l'EJB ne pas pouvoir pour créer le gestionnaire d'entité.

La chose étrange est que quand je lance

tu = (TestUser) em.find(TestUser.class, id); 

il fonctionne très bien

Ma structure du projet est

EAR 
    EJB 
    EJB Client 
    JPA 
     persistance.xml 

et je suppose que c'est le principal problème

SEVERE: java.lang.IllegalSt ateException: Impossible de récupérer EntityManagerFactory pour unitName testConnection

Les différents projets sont actuellement liés à l'aide de dépendances.

Alors des pensées?

Merci Jon

Répondre

4

J'ai un projet EJB et j'essaie de jouer avec JPA. Pour créer le gestionnaire d'entités, je l'injecte via l'annotation

La partie d'annotation elle-même semble correcte.

quand je lance une requête de test que je crois être bien

Je ne pense pas que ce soit, il est au moins un manque et dans la clause WHERE. Mais je voudrais écrire comme ça en fait:

Query userQuery = em.createQuery("SELECT u FROM TestUser u WHERE u.username = :name AND u.password = :password"); 
userQuery.setParameter("name", "test"); 
userQuery.setParameter("password", "test"); 
tu = (TestUser) userQuery.getSingleResult(); 

Je reçois une exception qui pointe vers l'EJB ne pas être en mesure de créer le gestionnaire d'entités. La chose étrange est que quand je cours (...) cela fonctionne bien.

C'est étrange en effet étant donné l'exception que vous obtenez.

Ma structure de projet est (...)

Je ne sais pas si c'est une faute de frappe ou non mais il est persistence.xml, pas persistance.xml, et il doit se trouver dans un répertoire META-INF de la racine de l'unité de persistance.

Alors des pensées?

Corrigez la requête, corrigez l'empaquetage persistence.xml. Veuillez également fournir son contenu et la trace complète de la pile.

+0

ahh merci beaucoup, le nom de persistance était une faute de frappe. était la requête foudroyée (je ne peux pas croire que je ne l'ai pas vu moi-même) je suis surpris de l'erreur qu'il a donné, à la suite d'une requête malformée. Merci encore une fois – Jon