javax.persistence.PersistenceException:没有名为EntityManager的持久性提供程序

前端之家收集整理的这篇文章主要介绍了javax.persistence.PersistenceException:没有名为EntityManager的持久性提供程序前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试按照我老师的文档提供的信息建立一个简单的jpa 2.0项目.我已经在这几个小时了,但不管我做什么,当我尝试创建一个EntityManagerFactory时,我总是得到这个异常:
我发现了很多关于这个例外的类似问题,但没有我能够解决解决方案.我在这做错了什么?

我从Eclipse创建了这个项目(没有命令提示符)

  1. Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named course
  2. at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:56)
  3. at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:34)
  4. at message.SaveMessage.main(SaveMessage.java:8)

目录结构

我的persistence.xml

  1. <persistence xmlns="http://java.sun.com/xml/ns/persistence"
  2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
  4. version="2.0">
  5. <persistence-unit name="course" transaction-type="RESOURCE_LOCAL">
  6.  
  7. <provider>org.hibernate.ejb.HibernatePersistence</provider>
  8.  
  9.  
  10. <properties>
  11. <property name="hibernate.dialect" value="org.hibernate.dialect.MysqL5InnoDBDialect" />
  12. <property name="hibernate.hbm2ddl.auto" value="update" />
  13.  
  14. <property name="javax.persistence.jdbc.driver" value="com.MysqL.jdbc.Driver" />
  15. <property name="javax.persistence.jdbc.url" value="jdbc:MysqL://localhost:3306/StudentDB" />
  16. <property name="javax.persistence.jdbc.user" value="root" />
  17. <property name="javax.persistence.jdbc.password" value="pasapas2005" />
  18. </properties>
  19. </persistence-unit>
  20. </persistence>

我的课

  1. package message;
  2.  
  3. import java.io.Serializable;
  4.  
  5. import javax.persistence.*;
  6.  
  7. @Entity
  8. public class Message implements Serializable {
  9.  
  10. private long id;
  11. private String text;
  12.  
  13. public Message() {
  14.  
  15. }
  16.  
  17. public Message(long id,String text) {
  18. this.setId(id);
  19. this.setText(text);
  20.  
  21. }
  22.  
  23. @Id
  24. public long getId() {
  25. return id;
  26. }
  27.  
  28. public void setId(long id) {
  29. this.id = id;
  30. }
  31.  
  32. public String getText() {
  33. return text;
  34. }
  35.  
  36. public void setText(String text) {
  37. this.text = text;
  38. }
  39.  
  40. }

我的测试员(主要)课

  1. package message;
  2.  
  3. import javax.persistence.*;
  4.  
  5. public class SaveMessage {
  6.  
  7. public static void main(String[] args) {
  8. EntityManagerFactory emf = Persistence.createEntityManagerFactory("course");
  9. EntityManager em = emf.createEntityManager();
  10. EntityTransaction tx = em.getTransaction();
  11. tx.begin();
  12.  
  13. Message message = new Message(1,"Hello world");
  14. em.persist(message);
  15. tx.commit();
  16. em.close();
  17. System.out.println("message saved");
  18.  
  19. }
  20.  
  21. }

解决方法

我认为类路径中缺少类org.hibernate.ejb.Hibernat ePersistence.将它添加到您的pom.xml:
  1. <dependency>
  2. <groupId>org.hibernate</groupId>
  3. <artifactId>hibernate-entitymanager</artifactId>
  4. <version>3.6.10.Final</version>
  5. </dependency>

用适当版本的Hibernate替换3.6.10.Final.

猜你在找的Java相关文章