在tomee中使用JBPM、spring、JPA(Hibernate)部署多个percente.xml时出现问题



我在通过xml configuration用多个persistence.xml配置多个实体管理器时遇到问题,有人能帮我配置吗。问题:

严重[main]org.apache.openejb.config.ReportValidationResults.logResults失败。。。core-web-1.0_A0:@PersistenceContext unitName必需,多个可用单元:ref"em",可用单元[applicationPersistenceUnit,applicationPersistenceUnit]

Below is configuration:
    <bean id="appEntityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" p:jpadialect-ref="jpaDialect" p:jpavendoradapter-ref="jpaVendorAdapter">
<property name="jpaProperties"/>
<property name="packagesToScan">
<list>
<value>${application.model.packagesToScan}</value>
<value>org.kie.*</value>
<value>org.jbpm.*</value>
</list>
</property>
<property name="dataSource" ref="appDataSource"/>
<property name="persistenceUnitManager" ref="persistenceUnitManager"/>
</bean>
<bean id="persistenceUnitManager" class="org.springframework.data.jpa.support.MergingPersistenceUnitManager">
<property name="persistenceXmlLocations">
<list>
<value>classpath*:META-INF/persistence.xml</value>
<value>classpath*:META-INF/workflow-persistence.xml</value>
</list>
</property>
<property name="defaultDataSource" ref="appDataSource"/>
</bean>

具有多个persistence.xmls的原因是JBPM需要单独的一组类。

您似乎有多个持久性单元,但jpa不知道如何处理实体管理器。它应该属于哪个持久性单元?

试试这样的东西(根据你当地的需要相应地改变)

  @PersistenceContext(unitName = "UNIT1", type = PersistenceContextType.TRANSACTION)
  private EntityManager unit1EntityManager;
  @PersistenceContext(unitName = "UNIT2", type = PersistenceContextType.TRANSACTION)
  private EntityManager unit2EntityManager;
  @PersistenceContext(unitName = "UNIT3", type = PersistenceContextType.TRANSACTION)
  private EntityManager unit3EntityManager;

如果你有一些罐子不是EE(100%弹簧,独立或其他),你可以将它们从扫描中排除,创建一个WEB-INF/exclusions.list并在里面添加:

default-list
myjarprefix

例如,如果jar名为myjarprefix-1.2.3.jar。

它将阻止扫描没有名称的非EE@PersistenceContext/@Persistence单元,因此将启动容器。

如果类与EE代码混合,则可以添加WEB-INF/scan.xml,其中包含:

<scan>
    <packages>
      <package>com.company.application.myeepackage</package>
    </packages>
</scan>

注意不要列出包含要排除的类的包

最新更新