没有为EntityManager命名的持久性提供程序...错误

时间:2013-09-16 13:55:35

标签: java hibernate java-ee jpa persistence.xml

我的持久性xml文件就像那样

<?xml version="1.0" encoding="UTF-8"?>
<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_1_0.xsd"
    version="1.0">
    <persistence-unit name="hibernateEbru">     
        <provider>org.hibernate.ejb.HibernatePersistence</provider>     
        <class>com.hibernate.business_card</class> 
        <properties>            
            <property name="hibernate.hbm2ddl.auto" value="create" />           
            <property name="hibernate.show_sql" value="true" />         
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" />         
            <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" />         
            <property name="hibernate.connection.username" value="root" />          
            <property name="hibernate.connection.password" value="2643" />          
            <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/BusinessDb" /> 

        </properties>
    </persistence-unit>
</persistence>

然后我用我的代码调用它:

public class test {
    public static void main(String[] args) {
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("hibernateEbru");

        EntityManager em = emf.createEntityManager();

        em.getTransaction().begin();

        business_card bc = new business_card();
        bc.setName("Ebru");

        em.persist(bc);

        em.getTransaction().commit();

        em.close();

        emf.close();

    }
}

我收到以下错误消息:

Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named hibernateEbru
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:56)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:34)
    at com.hibernate.test.main(test.java:8)

1 个答案:

答案 0 :(得分:0)

您需要将persistence.xml文件移动到适当的位置

来自JPA规范:

  

persistence.xml文件定义了持久性单元。 persistence.xml   file位于根目录的META-INF目录下   持久性单位。

持久性单元的根是这里的关键。

如果您是非Java EE应用程序

  

META-INF目录包含的jar文件或目录   persistence.xml文件被称为持久性单元的根。

如果您使用的是Java EE应用程序,则以下内容有效

  

在Java EE环境中,持久性单元的根必须是其中之一   以下内容:

     
      
  • EJB-JAR文件
  •   
  • WAR文件的WEB-INF / classes目录[80]
  •   
  • WAR文件的WEB-INF / lib目录中的jar文件
  •   
  • EAR库目录中的jar文件
  •   
  • 应用程序客户端jar文件
  •