この規則により、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 ファイルにプロパティーと値を設定できます。 具体的には、再生成されていないコードを使用するには、以下のように設定します。 <property name="openjpa.Compatibility" value="UseListAttributeForArrays=true"/> persistence.xml ファイル内。 アプリケーション環境でメタモデル・コードが再生成される場合、この問題は発生せず、このプロパティーを使用する必要はありません。 新しく再生成されたコードには正しい宣言が含まれるようになります。 ただし、アプリケーションがメタモデル・コードを再生成しない場合 (これはバイナリー・マイグレーションを実行する場合と考えられます)、このプロパティーを使用して古い生成済みのコードを新規ランタイムで使用できるようにすることができます。
後方互換性の維持を支援するために、構成の変換時に、システム・プロパティー UseListAttributeForArrays=true が設定されます。 ただし、アプリケーションが既に設定している OpenJPA のシステム・プロパティーは無視されます。 この規則は、persistence.xml ファイル内の既存の openjpa.Compatibility 設定をオーバーライドできないため、UseListAttributeForArrays システム・プロパティーの設定が無視される場合に、ユーザーに通知します。
この規則は、以下の条件が両方とも該当すると、persistence.xml ファイルにフラグを立てます。
このルールの自動修正が利用可能になると、次のように修正されます UseListAttributeForArrays の値 openjpa.Compatibility 値に以下が含まれるようにするプロパティー value="UseListAttributeForArrays=true" .
推奨処置は、以下のいずれかです。
詳しくは、以下を参照してください、