我正在使用Spring和OpenJPA开展项目。我有一个用例,我需要在不同的项目/ maven模块中创建相同数据源的实体。OpenJPA 2.x上的实体增强
方法1:
我有具有含有具有特定功能的实体组两个模块Maven项目核心实体。
模块A - Enitity1,Enitity2,Enitity3 模块B - Enitity4,Enitity5,Enitity6
我具有用于每个组的实体的创建单独的持久化单元和持久性XML。当实体在其各自的Maven模块中得到增强时,它可以正常工作。
方法2: 在这种方法中我有实体如上但唯一的不同独立的模块是,我使用单个持久性单元两者组实体。我已经在两个模块中添加了用于增强实体的openjpa-maven插件。 在这种情况下,当使用maven插件增强实体时,它会给出例外情况,表明在运行时在模块A中找不到实体的元数据。 是因为当实体增强,在模块A的实体莫名其妙的元数据丢失在runtime.This问题不附带模块B.实体
我解决此问题几个问题:
1)建议对同一数据源有多个持久性单元(如方法1中所做的那样)?
2)有什么办法可以增强单个持久化单元中的实体和不同的Maven模块?
3)除了使用eclipse和maven插件之外,实体增强的其他方法是否有所增强?
下面是在每个模块的pom.xml的插件:
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>openjpa-maven-plugin</artifactId>
<version>1.1</version>
<configuration>
<includes>**/entity/**/*.class</includes>
<addDefaultConstructor>true</addDefaultConstructor>
<enforcePropertyRestrictions>true</enforcePropertyRestrictions>
<persistenceXmlFile>${basedir}/src/main/resources/META-INF/moduleApersistence.xml</persistenceXmlFile>
</configuration>
<executions>
<execution>
<id>enhancer</id>
<phase>process-classes</phase>
<goals>
<goal>enhance</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.apache.openjpa</groupId>
<artifactId>openjpa</artifactId>
<version>${openjpa.version}</version>
</dependency>
</dependencies>
</plugin>
</plugins>
<pluginManagement>
<plugins>
<!--This plugin's configuration is used to store Eclipse m2e settings
only. It has no influence on the Maven build itself. -->
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>
org.apache.openjpa
</groupId>
<artifactId>
openjpa-maven-plugin
</artifactId>
<versionRange>
[2.2.0,)
</versionRange>
<goals>
<goal>enhance</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore></ignore>
</action>
</pluginExecution>
<pluginExecution>
<pluginExecutionFilter>
<groupId>
org.codehaus.mojo
</groupId>
<artifactId>
cobertura-maven-plugin
</artifactId>
<versionRange>
[2.5.2,)
</versionRange>
<goals>
<goal>instrument</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore></ignore>
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>