複数のモジュールに分割された Maven プロジェクトがあります。
proj-parent
+- proj-campaign
+- proj-core
+- proj-data
+- proj-rawimport
+- proj-ui
+- proj-ui-core
データ モジュールには、maven-processor-plugin を使用してメタモデル クラスを作成するように構成されているほとんどの JPA エンティティ クラスが含まれています。
<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 とデータ モジュールをマージする必要がないことを願っています。これは最後の手段です。
使用したバージョン:
<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>
前もって感謝します。
====UPDATE===== 同様の問題を抱えている人のための更新: 私は 2 つのプロジェクトをまとめました。問題は、両方のプロジェクトに同じ Bean 名のトランザクション マネージャーと永続化データがあったため、一方がメタモデルに正しくデータを入力し始め、途中でジョブを完了しなかった別のものに置き換えられたためでした。
2 人のエンティティ マネージャーが同じデータを参照し続けることの複雑さのため、(私の状況では) それらを結合することが最善でした。