Oracle® Fusion Middleware Oracle TopLink Java Persistence API (JPA)拡張機能リファレンス 12c (12.1.2) E48005-01 |
|
![]() 前 |
![]() 次 |
@OrderCorrection
を使用して、データベースから読み取られた順序リストが無効な場合(たとえば、Null、重複、負の値、またはリスト・サイズ以上の値がある場合)に使用する方針を指定します。
有効にするには、n要素の順序リストは{0, 1,..., n-1}
である必要があります。
注釈要素
表2-46は、この注釈の要素を示しています。
表2-46 @OrderCorrectionの注釈要素
注釈要素 | 説明 | デフォルト |
---|---|---|
value |
(オプション)データベースから読み取られた順序リストが無効な場合に使用する方針を指定します。
|
|
使用方法
@OrderCorrection
を使用すると、Oracle TopLinkが無効なリストの順序を処理する方法を指定できます。
EXCEPTION
: OrderCorrectionType=EXCEPTION
の場合、Oracle TopLinkはリストを修正しません。かわりに、Oracle TopLinkは、エラー・コードQueryException.LIST_ORDER_FIELD_WRONG_VALUE
でQueryException
をスローします。
たとえば、データベースに次の3つのオブジェクトのリストがあるとします。
{null, objectA}; {2, objectB}, {5, ObjectC};
アプリケーションに読み取る際、Oracle TopLinkは例外をスローします。
READ
: OrderCorrectionType=READ
の場合、Oracle TopLinkはアプリケーションに読み取られたリストを修正しますが、データベースに残る無効なリストの順序に関する情報は保持しません。これは、リストを読取り専用で使用する場合は問題になりませんが、リストを変更してデータベースに保存する場合は、順序がキャッシュとは異なり、無効になる可能性が高くなります。
READ
モードは、マップ済属性がList
ではない場合にデフォルトとして使用されます。
たとえば、データベースに次の3つのオブジェクトのリストがあるとします。
{null, objectA}; {2, objectB}, {5, ObjectC}
リストとして読み取られる場合: {objectA, objectB, objectC}
新しい要素をリストに追加する場合: {objectA, objectB, objectC, objectD}
更新したリストをデータベースに保存する場合: {null, objectA}, {2, objectB}, {5, objectC}, {3, objectD}
リストを再度読み取る場合: {objectA, objectB, objectD, objectC}
READ_WRITE
: OrderCorrectionType=READ_WRITE
の場合、Oracle TopLinkは、アプリケーションに読み取られるリストの順序を修正し、データベースに残った無効なリストの順序を記憶します。リストが更新されてデータベースに保存される場合、順序索引はデータベースのリスト順序がキャッシュ内とまったく同じになるように保存されます(そのため、有効になります)。
READ_WRITE
モードは、マップ済属性がList
またはVector
のいずれか(つまり、Oracle TopLinkの内部クラスIndirectList
から割当て可能)の場合にデフォルトとして使用されます。JPAでは、モードが指定されなければ、READ_WRITE
がデフォルトとして使用されます。
たとえば、データベースに次の3つのオブジェクトのリストがあるとします。
{null, objectA}; {2, objectB}, {5, ObjectC}
リストとして読み取られる場合: {objectA, objectB, objectC}
新しい要素をリストに追加する場合: {objectA, objectB, objectC, objectD}
更新したリストをデータベースに保存する場合: {0, objectA}, {1, objectB}, {2, objectC}, {3, objectD}
リストを再度読み取る場合: {objectA, objectB, objectC, objectD}
例
例2-85に、この注釈を使用する方法を示します。
例2-85 @OrderCorrection注釈の使用
@OrderColumn(name="ORDER_COLUMN")
@OrderCorrection(EXCEPTION)
List<String> designations;
例2-86に、eclipselink-orm.xml
ファイルでこの拡張を使用する方法を示します。
例2-86 XMLでの<element-collection>の使用
<element-collection name="designations"> <order-column name="ORDER_COLUMN" correction-type="EXCEPTION"/> </element-collection>
関連項目
詳細は、次のドキュメントを参照してください。