0

我有一个 Maven 项目,它分为几个模块。

proj-parent
+- proj-campaign
+- proj-core
+- proj-data
+- proj-rawimport
+- proj-ui
+- proj-ui-core

数据模块包含大部分 JPA 实体类,已配置为使用 maven-processor-plugin 创建元模型类:

<build>
    <plugins>
        <plugin>
          <groupId>org.bsc.maven</groupId>
          <artifactId>maven-processor-plugin</artifactId>
          <version>2.2.4</version>
          <executions>
            <execution>
              <id>process</id>
              <goals>
                <goal>process</goal>
              </goals>
              <phase>generate-sources</phase>
              <configuration>
                <outputDirectory>src/generated</outputDirectory>
                <processors>
                  <processor>org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor</processor>
                </processors>
                <compilerArguments>-ApersistenceXml="src/main/resources/META-INF/persistence-data.xml"</compilerArguments>
              </configuration>
            </execution>
          </executions>
          <dependencies>
            <dependency>
              <groupId>org.hibernate</groupId>
              <artifactId>hibernate-jpamodelgen</artifactId>
              <version>4.3.4.Final</version>
            </dependency>
          </dependencies>
        </plugin>
    </plugins>
</build>

这一切都很好,并且类是自动生成的,并在运行时填充了实际值。

但是,我也有包含一些 jpa 实体类的 rawimport 项目。到目前为止,它还没有被任何其他项目引用,但现在 ui 模块需要它。所以我以与数据项目相同的方式连接它,希望它能正常工作:

  • 将 rawimport 项目添加为父项中的托管依赖项(似乎还可以)
  • 添加了元模型生成器,与上面的数据配置一样,但指向不同的 persistence.xml(似乎还可以,生成的类也可以)
  • 在ui项目中引用了rawimport项目。(这一步会导致问题)

但是现在,当我启动系统时,数据项目中的属性不再填充,导致到处都是NullPointerExceptions。

我试过清除我的 maven 存储库,命令行清理和重建,eclipse maven 项目更新.. 没有任何帮助。

我正在尝试搜索调试级别的启动日志记录,但找不到任何错误,它似乎只是默默地不填充它们。

有谁知道我应该寻找什么,或者没有创建属性的典型原因?在将模块添加到现有项目时,有人遇到过类似的问题吗?我希望我不必合并 rawimport 和 data 模块,因为这是最后的手段。

使用的版本:

<wicket.version>6.11.0</wicket.version>         
<hibernate.version>4.3.8.Final</hibernate.version>      
<mysql.version>5.1.34</mysql.version>       
<c3p0.version>0.9.5</c3p0.version>      
<spring.version>4.1.4.RELEASE</spring.version>      
<hsql.version>2.3.2</hsql.version>      
<jetty.version>7.6.3.v20120416</jetty.version>

提前致谢。

====更新===== 为那些有类似问题的人更新:我已经将这两个项目混合在一起了。问题是因为我在两个项目中都有一个事务管理器和持久性数据,具有相同的 bean 名称,所以一个会开始正确填充元模型,然后在中途被另一个没有完成工作的替换。

由于让 2 个实体经理查看相同数据的复杂性,最好(对于我的情况)将它们组合在一起。

4

1 回答 1

0

如上所述,尝试使用相同的 bean 名称配置 2 个实体管理器。也许在父项目中只有一个经理会起作用,但对我来说,我刚刚选择了“mush together”选项!

于 2015-03-11T11:25:34.057 回答