ヘッダーをスキップ
Oracle® Fusion Middleware Oracle TopLink Java Persistence API (JPA)拡張機能リファレンス
12c (12.1.2)
E48005-01
  目次へ移動
目次

前
 
次
 

@VariableOneToOne

@VariableOneToOneを使用して、Javaオブジェクトとインタフェースの実装者の間のポインタ参照を表します。このマッピングは、通常、ソース・オブジェクトとターゲット・オブジェクトの間の1つのポインタ(インスタンス変数に格納されます)で表されます。リレーショナル・データベース表では、これらのマッピングは通常、外部キーとタイプ・コードを使用して実装されます。

注釈要素

表2-78は、この注釈の要素を示しています。

表2-78 @VariableOneToOneの注釈要素

注釈要素 説明 デフォルト

CascadeType

(オプション)アソシエーションのターゲットにカスケードされる必要がある操作の配列。


DiscriminatorClasses

(オプション)このマッピングとともに使用できる識別子タイプの配列。

何も指定されていない場合、TopLinkは、ターゲット・インタフェースを実装する永続性ユニット内のエンティティを追加します。

DiscriminatorColumnSTRINGの場合、TopLinkはEntity.name()を使用します。

DiscriminatorColumnCHARの場合、TopLinkはエンティティ・クラスの最初の文字を使用します。

DiscriminatorColumnINTEGERの場合、TopLinkは、最大の整数が明示的に示された後の次の整数を使用します。

DiscriminatorColumn

(オプション)タイプ識別子を含む識別子列。

DTYPE

FetchType

(オプション)フィールドまたはプロパティの値をロードする方法を指定します。

  • Eager: 永続性プロバイダ・ランタイムは値を即時にフェッチする必要があります。

  • Lazy: 永続性プロバイダが値を遅延ロードすることを示します。

Eager

Optional

(オプション)アソシエーションがオプションかどうかを指定します。


OrphanRemoval

(オプション)インタフェース・クラスがこのマッピングのターゲットであるかどうかを示します。


TargetInterface

(オプション)このマッピングのターゲットであるインタフェース・クラス。

何も指定されていない場合、TopLinkは、参照されるオブジェクトのタイプに基づいてインタフェース・クラスを推測します。


使用方法

エンティティ、MappedSuperclassまたは埋込み可能クラスに@VariableOneToOneを指定できます。

例2-124に、@VariableOneToOne注釈を使用する方法を示します。

例2-124 @VariableOneToOne注釈の使用

@VariableOneToOne(
    cascade={ALL},
    fetch=LAZY,
    discriminatorColumn=@DiscriminatorColumn(name="CONTACT_TYPE"),
    discriminatorClasses={
        @DiscriminatorClass(discriminator="E", value="Email.class"), 
        @DiscriminatorClass(discriminator="P", value="Phone.class")
    }
}
@JoinColumn(name="CONTACT_ID", referencedColumnName="C_ID")
@PrivateOwned
@JoinFetch(INNER)
public Contact getContact() {
    return contact;
}

例2-125に、eclipselink-orm.xmlファイルの<variable-one-to-one> XML要素を使用する同一マッピングを示します。

例2-125 <variable-one-to-one> XMLの使用

<variable-one-to-one name="contact" fetch="LAZY">
    <cascade>
        <cascade-all/>
    </cascade>
    <discriminator-column name="CONTACT_TYPE"/>
    <discriminator-class discriminator="E" value="Email.class"/>
    <discriminator-class discriminator="P" value="Phone.class"/>
    <join-column name="CONTACT_ID" referenced-column-name="C_ID"/>
    <private-owned/>
    <join-fetch>INNER</join-fetch>
</variable-one-to-one>

関連項目

詳細は、次を参照してください。