0

我们广泛使用 Hyperjaxb3(版本 0.6.2)来创建和定制我们的 JPA 实体类。

一个小烦恼是,当我们添加到我们的模式时,生成的持久性单元名称有时会发生变化。特别是,当我们 1) 更改包含的 XSD 文件中的 XML 命名空间,2) 从编译中删除命名空间,或 3) 将命名空间添加到编译时,就会发生这种情况。

看起来生成命名空间是编译中包含的(按摩的)命名空间的串联,所以如果我们调整命名空间,生成的单元名称会改变是有道理的。

问题是我们需要在几个模块的其他一些配置文件中包含持久性单元名称。每次持久性单元名称更改时,我们都有更多的文件要更新。

我们希望能够在调用 xjc 时(在我们的 maven 构建中)或可能在全局绑定中指定持久性单元名称。

如何指定要在生成的 persistence.xml 中使用的持久性单元名称?

4

1 回答 1

0

我们还没有找到真正解决这个问题的方法。在我们这样做之前,我们正在使用以下解决方法。

在我们的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>
于 2018-05-24T14:17:54.477 回答