4

试图将我的应用程序(spring + jpa)转换为基于 @Configuration 的 spring 注释并摆脱 spring 应用程序上下文 xml 和 persistence.xml。除了我用于构建时间类增强的 openjpa-maven-plugin 2.2.2 之外,如果没有persistence.xml 抛出错误,一切都将无法工作:

[错误] 无法在项目 myapp 上执行目标 org.apache.openjpa:openjpa-maven-plugin:2.2.2:enhance (enhancer):目标 org.apache.openjpa:openjpa-maven-plugin:2.2.2 的执行增强器:enhance failed: MetaDataFactory 无法配置(conf.newMetaDataFactoryInstance() 返回 null)。这可能意味着找不到配置属性。确保您有一个 META-INF/persistence.xml 文件,它在您的类路径中可用,或者您用于配置的属性文件可用。如果您使用的是 Ant,请查看任务嵌套元素的 或 属性。如果您的 OpenJPA 分发 jar 损坏,或者您的安全策略过于严格,也会发生这种情况。

插件的配置是:

      <configuration>
           <includes>**/business/model/*.class</includes>
           <addDefaultConstructor>true</addDefaultConstructor>
           <enforcePropertyRestrictions>true</enforcePropertyRestrictions>
      </configuration>

但是,它可以在 persistence.xml 存在但只包含空的持久性单元(我有 3 个)的情况下工作:

<persistence-unit name="pu1" transaction-type="RESOURCE_LOCAL">
</persistence-unit>

<persistence-unit name="pu2" transaction-type="RESOURCE_LOCAL">
</persistence-unit>

<persistence-unit name="pu3" transaction-type="RESOURCE_LOCAL">
</persistence-unit>

因此,openjpa-maven-plugin 可能从中获得的唯一信息是持久性单元名称,如果它甚至真的需要它们的话。

有什么方法可以在没有persistence.xml的情况下实现构建时openjpa类增强?

4

0 回答 0