異なるJARの永続性ユニットをマージ/拡張するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/1211777

質問

Eclipselinkを永続化プロバイダーとして使用して、データモデルにJPA永続化を使用します。モジュラー(OSGi)アプリケーションがあり、モジュールの1つに標準データモデルと、パッケージのすべてのエンティティを自動的に含む永続性ユニットが含まれています。永続性プロバイダーは別のモジュールにあり、うまく機能します。

ここで、3番目のモジュールでいくつかのエンティティを永続化ユニットに追加したいと思います。それ、どうやったら出来るの? このソリューションを見つけました。私が使っていない春。そのアプローチの概要は、永続ユニットの処理にフックし、<class>ファイルのpersistence.xmlエントリを手動でマージするポストプロセッサを記述することです。

永続性ユニットをマージすることは可能ですか?誰かが回避策を提案できますか?

役に立ちましたか?

解決

まず、 Dynamic-JPA のリンクを更新方法を提供しますエンティティを動的に。最初にこのオプションを検討します。


別のリンク( PDF )OSGiから、永続性と有用なEntityManagerFactoryを扱ういくつかのトップレベルの図があります。


興味深いアプローチですが、無関係かもしれません

永続性ユニットの作成に関するリンクです。 persistence.xmlファイルを使用せずにプログラムで(これは実際には実行できませんが、回答は問題に対する洞察を提供します)。 philkは、persistence.xmlファイルからプロバイダーを削除する方法に関する提案を提供しています。この方法に従うと、エンティティを特定の永続性ユニットに結合できる場合があります。

<!> quot;さて、Hibernateの古き良き時代には、セッションを作成して、 その場でクラスを追加します。 SUNs JPAに入れたことがないようです スペック。ただし、プロバイダをプロバイダから完全に削除しました persistence.xmlを作成し、EMFのプロパティを使用してELに渡します。この うまくいくようです。 persistence.xmlに残っているのは仕様だけです クラスの。メソッドを公開するのはそれほど難しくないでしょう ELのクラス名を解析し、そのクラスのDescriptorを作成します EL JPAプロバイダーのパブリックメソッドとして。 <!>引用;


最後に、ハッキングの解決策を紹介します。既に提案されていますが、事後、persistence.xmlファイルを編集するだけです。これはうまくいくと思いますが(試したことはありませんが)、間違いなくオプションです。

他のヒント

WARファイルにpersistence.xmlファイルが含まれるセットアップがあります。ここですでに説明したソリューションは、JAR、WAR、およびEARで使用できるはずです。 JPA 2.0:エンティティクラスをPersistenceUnitに追加*異なるjar *から自動的に

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top