2012-05-31 3 views
0

J'utilise eclipse + eclipselink + maven2 + mysql + jpa 2.0 + java SE.Les classes DAO ne peuvent pas voir persistence.xml

Je peux créer des tables MySQL à partir des classes Entity avec Eclipse. Le fichier persistence.xml se trouve dans src/main/resources/META-INF/...

J'ai également des connexions de base de données spécifiées dans eclipse pour la production et les tests. L'un ou l'autre est choisi avec le projet et semble fonctionner. En fonction de la source de données utilisée avec le projet, les tables sont créées dans la base de données sélectionnée. Ce qui est dans le fichier persistence.xml en tant que détails de connexion à la base de données est ignoré (je ne sais pas à quoi m'attendre). Aussi, si je fais un clic droit sur le fichier persistence.xml et que je sélectionne 'Outils JPA'> 'Synchroniser la liste des classes'. Le fichier est mis à jour avec les classes d'entité.

Le fichier persistence.xml est également requis sinon les tables ne seront créées dans aucune des bases de données. (Testé en renommant le fichier)

Plus tôt, j'ai également été en mesure d'exécuter certaines méthodes DAO pour tester en mettant et en chargeant des choses. Il y avait aussi un élément de menu dans l'explorateur de paquets Eclipse nommé 'JPA', listant les entités JPA dans le projet, qui n'existe plus.

Je n'ai fait aucun changement sur le projet (seulement fermé l'ordinateur pour la nuit). La prochaine fois que le projet a été ouvert, je n'était plus en mesure d'effectuer l'une des Dão méthodes et je reçois l'erreur suivante:

No Persistence provider for EntityManager named xxx 

La même erreur vient de la classe principale ayant Dão méthodes, test JUnit géré par Eclipse et les mêmes tests exécutés par Maven.

Remarque: Je suis toujours capable de créer les tables à partir d'entités.

Un conseil?

Répondre

0

Le problème était dans le pom.xml. J'ai eu la dépendance pour hibernate car eclipselink était nécessaire.

MAL: C'est ce que j'avais

<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-entitymanager</artifactId> 
    <version>4.1.3.Final</version> 
</dependency> 

DROIT: Il était censé être

<dependency> 
    <groupId>org.eclipse.persistence</groupId> 
    <artifactId>eclipselink</artifactId> 
    <version>2.0.0</version> 
    <scope>compile</scope> 
</dependency> 

Je suis la solution en testant purement tout son possible. Pas sûr même comment j'ai réussi à essayer la substitution que j'ai pu effectuer un test avec le même projet pom & plus tôt.

Aucune des erreurs ou comment il fonctionnait n'a pas suggéré qu'il pourrait être un peu faux.

Pas même sûr que c'est tout à fait raison, mais au moins cela fonctionne à nouveau.

0

Généralement, cela est dû au fait que votre répertoire de ressources n'est pas déployé dans votre conteneur d'applications. Dans eclipse, cliquez avec le bouton droit sur le projet et sélectionnez Propriétés dans votre Explorateur de projet. Ensuite, sélectionnez la propriété Assemblée de déploiement et faire en sorte que vos «/src/main/ressources » est en cours de déploiement:

Deployment Assembly

+0

Je me rappelle avoir utilisé la propriété 'Deployment Assembly' parfois ... Mais devinez quoi. Maintenant, je n'ai même pas cette option disponible. Cependant merci pour le conseil. C'est peut-être la raison pour laquelle les choses ne marchent pas, mais maintenant je dois trouver pourquoi cela manque. J'ai également désactivé la nature de Maven pour voir si elle ramène le menu. Pas de chance. –

+0

Eclipse Indigo, au fait. –

+0

Si je crée un nouveau projet et que je le transforme en "Projet Web Dynamique", j'obtiens l'option "Déploiement Assemblage". Mais pour mon projet SE actuel, je n'ai pas cette option disponible et je ne suis pas sûr si je suis supposé l'utiliser, même si ce serait disponible. –

Questions connexes