2014-04-09 85 views
0

我试图获取配置Hibernate与我的Scala代码的工作,当我去运行应用程序,我得到如下:没有持久性提供的EntityManager

javax.persistence.PersistenceException: No Persistence provider for EntityManager named studentalerts 
    javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:61) 
    hibernateconfig.HibernateConfig$.getEntityManager(HibernateConfig.scala:29) 
    hibernateconfig.HibernateConfig$.createEntityManager(HibernateConfig.scala:11) 
    controller.test.<init>(test.scala:8) 
    controller.TestHome.doGet(register.scala:11 

我的persistence.xml文件(在我的WEB -INF /班/ META-INF文件夹如下

<persistence-unit name="studentalerts" transaction-type="RESOURCE_LOCAL"> 
    <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider> 
    <non-jta-data-source>jdbc/studentalerts</non-jta-data-source> 
    <properties> 
    </properties> 
</persistence-unit> 

和我的相关Scala代码是

object HibernateConfig { 
    var mapping: SearchMapping = _ 
    def createEntityManager(): EntityManager = getEntityManager 
    def getEntityManager: EntityManager = { 
    val properties: Properties = new Properties() 

    properties.put("javax.persistence.provider", "org.hibernate.jpa.HibernatePersistenceProvider") 
    properties.put("javax.persistence.transactionType", "RESOURCE_LOCAL") 
    properties.put("javax.persistence.jdbc.url", "jdbc:mysql://localhost:3306/studentalerts") 
    properties.put("javax.persistence.jdbc.user", "alert") 
    properties.put("javax.persistence.jdbc.password", "12345") 
    properties.put("javax.persistence.jdbc.driver", "com.mysql.jdbc.Driver") 
    properties.put("hibernate.hbm2ddl.auto", "update") 
    properties.put("hibernate.show_sql", "false") 
    properties.put("hibernate.format_sql", "false") 
    properties.put("hibernate.current_session_context_class", "thread") 
    properties.put("hibernate.transaction.factory_class", "org.hibernate.transaction.JDBCTransactionFactory") 
    properties.put("hibernate.dialect", "org.hibernate.dialect.MySQL5Dialect") 

    val emf: EntityManagerFactory = Persistence.createEntityManagerFactory("studentalerts", properties) 
    emf.createEntityManager() 
    } 
} 

它具有硬时间线与

val emf: EntityManagerFactory = Persistence.createEntityManagerFactory("studentalerts", properties) 

任何帮助不胜感激。

感谢

回答

0

provider包声明似乎不正确。

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

尝试更改配置,如下所示。

<provider>org.hibernate.ejb.HibernatePersistence</provider> 

此外,你正在混合这两个东西,配置编程+ xml。它应该以任何方式完成。

只能通过设置所有属性&来使用它,如下所示通过xml进行配置。

EntityManagerFactory = Persistence.createEntityManagerFactory("studentalerts"); 

Persistence.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_2_0.xsd" 
     version="2.0"> 
    <persistence-unit name="studentalerts"> 
     <properties> 
      <property name="javax.persistence.jdbc.driver" value="XYZ"/> 
      <property name="javax.persistence.jdbc.url" value="XYZ"/> 
      <property name="hibernate.show_sql" value="true"/> 
     </properties> 
    </persistence-unit> 
</persistence> 
相关问题