我正在尝试按照我老师的文档提供的信息建立一个简单的jpa 2.0项目.我已经在这几个小时了,但不管我做什么,当我尝试创建一个EntityManagerFactory时,我总是得到这个异常:
我发现了很多关于这个例外的类似问题,但没有我能够解决的解决方案.我在这做错了什么?
我发现了很多关于这个例外的类似问题,但没有我能够解决的解决方案.我在这做错了什么?
- 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)
目录结构
我的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>
我的课
- 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;
- }
- }
我的测试员(主要)课
- 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");
- }
- }
解决方法
我认为类路径中缺少类org.hibernate.ejb.Hibernat ePersistence.将它添加到您的pom.xml:
- <dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-entitymanager</artifactId>
- <version>3.6.10.Final</version>
- </dependency>
用适当版本的Hibernate替换3.6.10.Final.