[英]How do I specify the persistence unit name to be used in the generated persistence.xml?
我们广泛使用Hyperjaxb3(版本0.6.2)来创建和定制JPA实体类。
一个小烦人的事实是,当我们添加到架构中时,生成的持久性单元名称有时会更改。 特别是,当我们1)更改包含的XSD文件中的XML名称空间,2)从编译中删除名称空间或3)将名称空间添加到编译中时,就会发生这种情况。
看起来,generate名称空间是编译中包含的(massaged)名称空间的串联,因此有意义的是,如果我们调整名称空间,则生成的单元名称将更改。
问题是,我们需要在几个模块中的一些其他配置文件中包含持久性单元名称。 每次持久性单元名称更改时,我们都有更多文件要更新。
我们希望能够在调用xjc时(在我们的maven构建中)或在全局绑定中指定持久性单元名称。
如何指定在生成的persistence.xml中使用的持久性单元名称?
我们尚未找到解决此问题的真正方法。 在我们这样做之前,我们将使用以下解决方法。
在我们的pom.xml中,在生成xjc代码之后,我们将进行后期处理以替换生成的persistence.xml中的持久性单元名称。 在此示例中,我们基于Maven模块名称命名持久性单元。
<plugin>
<groupId>com.google.code.maven-replacer-plugin</groupId>
<artifactId>replacer</artifactId>
<executions>
<execution>
<id>Name Persistence Unit</id>
<phase>process-resources</phase>
<goals>
<goal>replace</goal>
</goals>
<configuration>
<includes>
<include>${basedir}/target/generated-sources/xjc/**/persistence.xml</include>
</includes>
<regex>true</regex>
<replacements>
<replacement>
<token>persistence-unit name=".*"</token>
<value>persistence-unit name="${project.artifactId}"</value>
</replacement>
</replacements>
</configuration>
</execution>
</executions>
</plugin>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.