パッケージ jakarta.persistence

アノテーション型 AttributeOverride


  • @RepeatableSE(AttributeOverrides.class)
    @TargetSE({TYPESE,METHODSE,FIELDSE})
    @RetentionSE(RUNTIMESE)
    public @interface AttributeOverride
    Basic (明示的またはデフォルト)プロパティまたはフィールド、または Id プロパティまたはフィールドのマッピングをオーバーライドするために使用されます。

    マップされたスーパークラスまたは埋め込みフィールドまたはプロパティを継承するエンティティに適用して、マップされたスーパークラスまたは埋め込み可能クラス(またはその属性の 1 つの埋め込み可能クラス)によって定義された基本的なマッピングまたは ID マッピングをオーバーライドできます。

    埋め込み可能なクラスのインスタンスを含む要素コレクション、またはキーや値が埋め込み可能なクラスであるマップコレクションに適用できます。AttributeOverride をマップに適用する場合、マップキーまたはマップ値の一部として指定するには、オーバーライドされる属性の名前の前に "key." または "value." を使用する必要があります。

    複数レベルの埋め込みでマッピングをオーバーライドするには、ドット("." )表記形式を name 要素で使用して、埋め込み属性内の属性を示す必要があります。ドット表記で使用される各識別子の値は、それぞれの埋め込みフィールドまたはプロパティの名前です。

    AttributeOverride が指定されていない場合、列は元のマッピングと同じようにマップされます。

        Example 1:
    
        @MappedSuperclass
        public class Employee {
            @Id protected Integer id;
            @Version protected Integer version;
            protected String address;
            public Integer getId() { ... }
            public void setId(Integer id) { ... }
            public String getAddress() { ... }
            public void setAddress(String address) { ... }
        }
    
        @Entity
        @AttributeOverride(name="address", column=@Column(name="ADDR"))
        public class PartTimeEmployee extends Employee {
            // address field mapping overridden to ADDR
            protected Float wage();
            public Float getHourlyWage() { ... }
            public void setHourlyWage(Float wage) { ... }
        }
     
    
        Example 2:
    
        @Embeddable public class Address {
            protected String street;
            protected String city;
            protected String state;
            @Embedded protected Zipcode zipcode;
        }
    
        @Embeddable public class Zipcode {
            protected String zip;
            protected String plusFour;
        }
    
        @Entity public class Customer {
            @Id protected Integer id;
            protected String name;
            @AttributeOverrides({
                @AttributeOverride(name="state",
                                   column=@Column(name="ADDR_STATE")),
                @AttributeOverride(name="zipcode.zip",
                                   column=@Column(name="ADDR_ZIP"))
            })
            @Embedded protected Address address;
            ...
        }
    
    
        Example 3:
    
        @Entity public class PropertyRecord {
            @EmbeddedId PropertyOwner owner;
            @AttributeOverrides({
                @AttributeOverride(name="key.street", 
                                   column=@Column(name="STREET_NAME")),
                @AttributeOverride(name="value.size", 
                                   column=@Column(name="SQUARE_FEET")),
                @AttributeOverride(name="value.tax", 
                                   column=@Column(name="ASSESSMENT"))
            })
           @ElementCollection
           Map<Address, PropertyInfo> parcels;
        }
    
        @Embeddable public class PropertyInfo {
            Integer parcelNumber;
            Integer size;
            BigDecimal tax;
        }
    
     
    導入:
    1.0
    関連事項:
    Embedded, Embeddable, MappedSuperclass, AssociationOverride
    • 必須定数のサマリー

      必須要素  
      修飾子と型 必須要素 説明
      Columncolumn
      (必須)永続属性にマップされている列。
      StringSEname
      (必須)プロパティベースのアクセスが使用されている場合はマッピングが上書きされるプロパティの名前、またはフィールドベースのアクセスが使用されている場合はフィールドの名前。
    • 要素の詳細

      • name

        StringSE name
        (必須)プロパティベースのアクセスが使用されている場合はマッピングが上書きされるプロパティの名前、またはフィールドベースのアクセスが使用されている場合はフィールドの名前。
      • column

        Column column
        (必須)永続属性にマップされている列。マッピング型は、埋め込み可能クラスまたはマップされたスーパークラスで定義されているものと同じままです。