【问题标题】:JPA: configure persistence providerJPA:配置持久性提供程序
【发布时间】:2013-09-30 20:01:02
【问题描述】:
  • 我有一个使用 maven(快速入门原型)创建的简单 java 项目

  • 我正在尝试为 drools 会话配置 JPA 持久性(代码来自 drools 文档)

    1. 我在我的 pom.xml 中添加了 drools-persistence-jpa、Bitronix 事务管理器和 com.h2database 依赖项

    2. 我在“src/META-INF”中的 Eclipse 项目中创建了一个 META-INF 文件夹作为 Source-Folder

    3. 我在那里添加了 persistence.xml 和 jndi.properties 文件。

    4. 在我的 TestCase 中有以下代码:

    [...] EntityManagerFactory emf = Persistence.createEntityManagerFactory("org.drools.persistence.jpa"); [...]

运行测试时,出现以下异常:

javax.persistence.PersistenceException: No Persistence provider for EntityManager 命名为 org.drools.persistence.jpa 在 javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:69) 在 javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47) 在 com.sample.MyTest.testJPA(MyTest.java:112)

我比较确定,我创建 META-INF 或 persistence.xml 的方式有问题(见下文)。有什么建议吗?

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0"
    xmlns="http://java.sun.com/xml/ns/persistence" xmlns:orm="http://java.sun.com/xml/ns/persistence/orm"
    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 
    http://java.sun.com/xml/ns/persistence/orm 
    http://java.sun.com/xml/ns/persistence/orm_1_0.xsd">
    <persistence-unit name="org.drools.persistence.jpa" transaction-type="JTA">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <jta-data-source>jdbc/testDatasource</jta-data-source>
        <class>org.drools.persistence.info.SessionInfo</class>
        <class>org.drools.persistence.processinstance.ProcessInstanceInfo</class>
        <class>org.drools.persistence.processinstance.ProcessInstanceEventInfo</class>
        <properties>
            <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect" />
            <property name="hibernate.max_fetch_depth" value="3" />
            <property name="hibernate.hbm2ddl.auto" value="create" />
            <property name="hibernate.show_sql" value="true" />
            <property name="hibernate.connection.autocommit" value="true" />
            <property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.BTMTransactionManagerLookup" />
        </properties>
    </persistence-unit>
</persistence>

【问题讨论】:

    标签: jpa drools persistence.xml meta-inf


    【解决方案1】:

    我认为问题与您放置 persistence.xml 文件的位置有关。而不是src/META-INF,您必须放置在src/main/resources/META-INFsrc/test/resources/META-INF

    已编辑: 在您的 persistence.xml 文件中,您声明要使用 org.hibernate.ejb.HibernatePersistence 作为提供程序。根据您的 cmets,您不包括 hibernate-entitymanager 作为依赖项 [source]。尝试添加该依赖项。

    希望对你有帮助,

    【讨论】:

      猜你喜欢
      • 2014-02-22
      • 2014-12-15
      • 1970-01-01
      • 2014-01-25
      • 2012-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多