2014-02-18 85 views
1

我得到以下異常,同時部署我的EJB EAR到JBoss7.1服務器:PersistenceProvider類org.hibernate.ejb.HibernatePersistence沒有找到

Caused by: javax.persistence.PersistenceException: JBAS011466: PersistenceProvider ' 
      org.hibernate.ejb.HibernatePersistence 
     ' not found 

我已經加入我的EJB以下JAR(這些也駐留內我的JBoss模塊jboss_home/modules/org/hibernate/main):

hibernate-commons-annotations-4.0.1.Final.jar 
hibernate-core-4.0.1.Final.jar 
hibernate-entitymanager-4.0.1.Final.jar 
hibernate-infinispan-4.0.1.Final.jar 

這是我如何加入休眠提供商在我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="hbPU" transaction-type="RESOURCE_LOCAL"> 
     <provider> 
      org.hibernate.ejb.HibernatePersistence 
     </provider> 
     ... 
    </persistence-unit> 
</persistence> 
+0

什麼其他的庫?你添加了javaassist和spring-orm嗎? –

回答

2

我試過了... 創建一個java類HibernateUtil.java並提供持久化單元名稱給entityManagerFactory = Persistence.createEntityManagerFactory(「abc」);

public class HibernateUtil { 

    private static final EntityManagerFactory entityManagerFactory; 
    static { 
       try { 
        entityManagerFactory = Persistence.createEntityManagerFactory("hbPU"); // here is your persistence unit name 
        System.out.println("Entity Menager Test.............."+ entityManagerFactory); 
       } catch (Throwable ex) { 

        System.err.println("Initial SessionFactory creation failed." + ex); 
        throw new ExceptionInInitializerError(ex); 

        } 
    } 

public static EntityManagerFactory getEntityManagerFactory() { 
     return entityManagerFactory; 
    } 

} 

,並創建你的persistence.xml這樣

<persistence version="2.0" 
     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"> 
     <persistence-unit name="hbPU" transaction-type="RESOURCE_LOCAL"> 
    <provider>org.hibernate.ejb.HibernatePersistence</provider> 
    <!-- map your classes. --> 
    <properties> 
    <property name="javax.persistence.jdbc.driver" value="xxx" /> 
    <property name="javax.persistence.jdbc.url"value="xxx"/> 
    <property name="javax.persistence.jdbc.user" value="xxx" /> 
    <property name="javax.persistence.jdbc.password" value="xxx" /> 
    <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" /> 
    <property name="hibernate.hbm2ddl.auto" value="create-drop" /> 
    <property name="hibernate.show_sql" value="true" /> 
    </properties> 
     </persistence-unit> 
    </persistence> 

你的錯誤不會來......

+1

' org.hibernate.ejb.HibernatePersistence'需要在一行中。我把它放在三行,因此它不適合我。謝謝 :-) –

0

我有同樣的錯誤。所有我不得不到是把供應商的說法成1線

<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider> 

這是

<provider> 
    org.hibernate.jpa.HibernatePersistenceProvider 
</provider>