试图将我的应用程序(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类增强?