パッケージ jakarta.persistence

アノテーション型 OneToOne


  • @TargetSE({METHODSE,FIELDSE})
    @RetentionSE(RUNTIMESE)
    public @interface OneToOne
    1 対 1 の多重度を持つ別のエンティティへの単一値の関連付けを指定します。通常、関連付けられているターゲットエンティティは、参照されているオブジェクトの型から推測できるため、明示的に指定する必要はありません。関連が双方向の場合、非所有側は OneToOne アノテーションの mappedBy 要素を使用して、所有側の関連フィールドまたはプロパティを指定する必要があります。

    OneToOne アノテーションを埋め込み可能クラス内で使用して、埋め込み可能クラスからエンティティクラスへの関連を指定できます。関連が双方向で、埋め込み可能クラスを含むエンティティが関連の所有側にある場合、非所有側は OneToOne アノテーションの mappedBy 要素を使用して、埋め込み可能クラスの関連フィールドまたはプロパティを指定する必要があります。mappedBy 要素でドット("." )表記構文を使用して、埋め込み属性内の関連属性を示す必要があります。ドット表記で使用される各識別子の値は、それぞれの埋め込みフィールドまたはプロパティの名前です。

        Example 1: One-to-one association that maps a foreign key column
    
        // On Customer class:
    
        @OneToOne(optional=false)
        @JoinColumn(
            name="CUSTREC_ID", unique=true, nullable=false, updatable=false)
        public CustomerRecord getCustomerRecord() { return customerRecord; }
    
        // On CustomerRecord class:
    
        @OneToOne(optional=false, mappedBy="customerRecord")
        public Customer getCustomer() { return customer; }
    
    
        Example 2: One-to-one association that assumes both the source and target share the same primary key values. 
    
        // On Employee class:
    
        @Entity
        public class Employee {
            @Id Integer id;
        
            @OneToOne @MapsId
            EmployeeInfo info;
            ...
        }
    
        // On EmployeeInfo class:
    
        @Entity
        public class EmployeeInfo {
            @Id Integer id;
            ...
        }
    
    
        Example 3: One-to-one association from an embeddable class to another entity.
    
        @Entity
        public class Employee {
           @Id int id;
           @Embedded LocationDetails location;
           ...
        }
    
        @Embeddable
        public class LocationDetails {
           int officeNumber;
           @OneToOne ParkingSpot parkingSpot;
           ...
        }
    
        @Entity
        public class ParkingSpot {
           @Id int id;
           String garage;
           @OneToOne(mappedBy="location.parkingSpot") Employee assignedTo;
            ... 
        } 
    
     
    導入:
    1.0
    • オプション要素のサマリー

      オプション要素  
      修飾子と型 オプションの要素 説明
      CascadeType[]cascade
      (オプション)関連付けのターゲットにカスケードする必要がある操作。
      FetchTypefetch
      (オプション)関連付けを遅延ロードするか、積極的にフェッチする必要があるか。
      StringSEmappedBy
      (オプション)関連を所有するフィールド。
      booleanoptional
      (オプション)関連付けがオプションかどうか。
      booleanorphanRemoval
      (オプション)リレーションシップから削除されたエンティティに削除操作を適用し、それらのエンティティに削除操作をカスケードするかどうか。
      ClassSEtargetEntity
      (オプション)関連付けのターゲットであるエンティティクラス。
    • 要素の詳細

      • targetEntity

        ClassSE targetEntity
        (オプション)関連付けのターゲットであるエンティティクラス。

        デフォルトでは、関連付けを保存するフィールドまたはプロパティの型になります。

        デフォルト:
        void.class
      • cascade

        CascadeType[] cascade
        (オプション)関連付けのターゲットにカスケードする必要がある操作。

        デフォルトでは、操作はカスケードされません。

        デフォルト:
        {}
      • fetch

        FetchType fetch
        (オプション)関連付けを遅延ロードするか、積極的にフェッチする必要があるか。EAGER 戦略は、永続性プロバイダーランタイムの要件であり、関連付けられたエンティティを積極的にフェッチする必要があります。LAZY 戦略は、永続化プロバイダーランタイムへのヒントです。
        デフォルト:
        jakarta.persistence.FetchType.EAGER
      • optional

        boolean optional
        (オプション)関連付けがオプションかどうか。false に設定した場合、null 以外の関連が常に存在する必要があります。
        デフォルト:
        true
      • mappedBy

        StringSE mappedBy
        (オプション)関連を所有するフィールド。この要素は、関連付けの逆(非所有)側でのみ指定されます。
        デフォルト:
        ""
      • orphanRemoval

        boolean orphanRemoval
        (オプション)リレーションシップから削除されたエンティティに削除操作を適用し、それらのエンティティに削除操作をカスケードするかどうか。
        導入:
        2.0
        デフォルト:
        false