javax.la persistance.PersistenceException: Pas de fournisseur de Persistance pour l'EntityManager nommé
Je suis en train de constituer un simple jpa 2.0 projet en suivant les informations fournies par mon professeur de documentation . J'ai été sur cela pendant des heures maintenant, mais peu importe ce que je fais, j'ai toujours cette erreur quand j'essaye de créer un EntityManagerFactory:
J'ai trouvé pas mal de questions similaires à propos de cette exception, mais aucune des solutions que je suis capable d'aller au travail. Ce que je fais mal?
J'ai créé ce projet à partir d'Eclipse (pas d'invite de commande)
Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named course
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:56)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:34)
at message.SaveMessage.main(SaveMessage.java:8)
structure de répertoire
mon persistence.xml
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0">
<persistence-unit name="course" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
<property name="hibernate.hbm2ddl.auto" value="update" />
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/StudentDB" />
<property name="javax.persistence.jdbc.user" value="root" />
<property name="javax.persistence.jdbc.password" value="pasapas2005" />
</properties>
</persistence-unit>
</persistence>
Ma classe
package message;
import java.io.Serializable;
import javax.persistence.*;
@Entity
public class Message implements Serializable {
private long id;
private String text;
public Message() {
}
public Message(long id, String text) {
this.setId(id);
this.setText(text);
}
@Id
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
}
Mon mon testeur (principale) de classe
package message;
import javax.persistence.*;
public class SaveMessage {
public static void main(String[] args) {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("course");
EntityManager em = emf.createEntityManager();
EntityTransaction tx = em.getTransaction();
tx.begin();
Message message = new Message(1, "Hello world");
em.persist(message);
tx.commit();
em.close();
System.out.println("message saved");
}
}
Vérifier que la classe org.mise en veille prolongée.ejb.Hibernat ePersistence est sur votre classpath.
Merci pour la réponse. Ma question peut sembler stupide, mais comment puis-je vérifier si mon classpath ?
Dans eclipse, avec votre projet ouvert, appuyez sur Ctrl+Maj+T et commencez à taper le nom de la classe. Si elle n'apparaît pas dans la liste, vous savez qu'il n'est pas sur le chemin de classe.
il n'apparaît pas. Je vais faire le nécessaire merci
Hey, Pourriez-vous s'il vous plaît partager votre pom.xml fichier?
Merci pour la réponse. Ma question peut sembler stupide, mais comment puis-je vérifier si mon classpath ?
Dans eclipse, avec votre projet ouvert, appuyez sur Ctrl+Maj+T et commencez à taper le nom de la classe. Si elle n'apparaît pas dans la liste, vous savez qu'il n'est pas sur le chemin de classe.
il n'apparaît pas. Je vais faire le nécessaire merci
Hey, Pourriez-vous s'il vous plaît partager votre pom.xml fichier?
OriginalL'auteur georges van | 2013-05-20
Vous devez vous connecter pour publier un commentaire.
Je pense que la classe org.mise en veille prolongée.ejb.Hibernat ePersistence est absent de votre classpath. Ajouter à votre pom.xml:
Remplacer 3.6.10.Final avec la version appropriée de mise en veille prolongée.
Ressemble vous êtes absent de slf4j trop.
Note: j'ai eu cette exception après le passage d'une classe à un nouveau package manquant afin de refléter le changement de la persistence.xml.
OriginalL'auteur JamesB
J'ai eu le même problème. Après beaucoup de recherche j'ai trouvé que la solution était juste pour installer à partir d'eclipse marketplace la HiberObjects.
OriginalL'auteur Andreas Foteas