ListAttribute に関する JPA MetaModel コード生成での振る舞いの変更を確認する

この規則により、ListAttribute を使用して生成されたコードに関する OpenJPA での振る舞いの変更についてユーザーに警告するために、persistence.xml ファイルにフラグを立てます。

JPA 2.0 仕様を使用していないアプリケーションをマイグレーションする場合は、この問題は発生しません。 アプリケーションが JPA 2.0 仕様の Criteria API または Metamodel API を使用していない場合、この問題は発生しません。

この変更の影響を受ける可能性のあるアプリケーションのタイプは、タイプ・セーフな JPA Criteria API インターフェースまたは JPA Metamodel API インターフェースを直接使用するアプリケーションです。 この Metamodel API は、JPA 2.0 仕様の一部として導入されました。 前に説明した問題が現れる JPA 2.0 仕様が含まれる WebSphere には 2 つのバージョンがあります。 それらは:

WebSphere v8.5 は OpenJPA 2.2.0 を使用し、これを同梱しています。 従来のリリースでは (前の説明を参照)、OpenJPA の MetaModel 実装ですべての配列に対して ListAttribute が生成されました。 配列が PersistentCollection として保管されている動作は正しいですが、 アノテーションが付けられていない配列 (例: byte []、char []) の場合は正しくありません。OpenJPA 2.2.0 では、この動作が修正され、 PersistentCollections として保管されていない配列は ListAttribute の代わりに SingularAttribute を使用します。

後方互換性を維持するには、persistence.xml ファイルにプロパティーと値を設定できます。 具体的には、再生成されていないコード を使用するには、persistence.xml ファイル内の <property name="openjpa.Compatibility" value="UseListAttributeForArrays=true"/> をセットします。 アプリケーション環境でメタモデル・コードが再生成される場合、この問題は発生せず、このプロパティーを使用する必要はありません。 新しく再生成されたコードには正しい宣言が含まれるようになります。 ただし、アプリケーションがメタモデル・コードを再生成しない場合 (これはバイナリー・マイグレーションを実行する場合と考えられます)、このプロパティーを使用して古い生成済みのコードを新規ランタイムで使用できるようにすることができます。

後方互換性の維持を支援するために、構成の変換時に、システム・プロパティー UseListAttributeForArrays=true が設定されます。 ただし、アプリケーションが既に設定している OpenJPA のシステム・プロパティーは無視されます。 既存の openjpa をオーバーライドできないため、このルールは、UseListAttributeForArarrays システム・プロパティーの設定が 無視されることをユーザーに通知します。persistence.xml ファイル内の互換性設定。

この規則は、以下の条件が両方とも該当すると、persistence.xml ファイルにフラグを立てます。

この規則のクイック・フィックスは、 openjpa 中の UseListAttributeForArrays値を変更します。互換性 プロパティー、値には value="UseListAttributeForArarrays = true "を含めています。

推奨処置は、以下のいずれかです。

詳しくは、以下を参照してください、