パッケージ jakarta.persistence

アノテーション型 MappedSuperclass


  • @DocumentedSE
    @TargetSE(TYPESE)
    @RetentionSE(RUNTIMESE)
    public @interface MappedSuperclass
    継承するエンティティにマッピング情報が適用されるクラスを指定します。マップされたスーパークラスには、個別に定義されたテーブルはありません。

    MappedSuperclass アノテーションで指定されたクラスはエンティティと同じ方法でマッピングできますが、マッピングされたスーパークラス自体にはテーブルが存在しないため、マッピングはそのサブクラスにのみ適用されます。サブクラスに適用されると、継承されたマッピングはサブクラステーブルのコンテキストで適用されます。マッピング情報は、AttributeOverride および AssociationOverride アノテーションまたは対応する XML 要素を使用することにより、そのようなサブクラスでオーバーライドできます。

        Example: Concrete class as a mapped superclass
    
        @MappedSuperclass
        public class Employee {
        
            @Id protected Integer empId;
            @Version protected Integer version;
            @ManyToOne @JoinColumn(name="ADDR")
            protected Address address;
        
            public Integer getEmpId() { ... }
            public void setEmpId(Integer id) { ... }
            public Address getAddress() { ... }
            public void setAddress(Address addr) { ... }
        }
        
        // Default table is FTEMPLOYEE table
        @Entity
        public class FTEmployee extends Employee {
        
            // Inherited empId field mapped to FTEMPLOYEE.EMPID
            // Inherited version field mapped to FTEMPLOYEE.VERSION
            // Inherited address field mapped to FTEMPLOYEE.ADDR fk
        
            // Defaults to FTEMPLOYEE.SALARY
            protected Integer salary;
        
            public FTEmployee() {}
        
            public Integer getSalary() { ... }
        
            public void setSalary(Integer salary) { ... }
        }
        
        @Entity @Table(name="PT_EMP")
        @AssociationOverride(
            name="address", 
            joincolumns=@JoinColumn(name="ADDR_ID"))
        public class PartTimeEmployee extends Employee {
        
            // Inherited empId field mapped to PT_EMP.EMPID
            // Inherited version field mapped to PT_EMP.VERSION
            // address field mapping overridden to PT_EMP.ADDR_ID fk
            @Column(name="WAGE")
            protected Float hourlyWage;
        
            public PartTimeEmployee() {}
        
            public Float getHourlyWage() { ... }
            public void setHourlyWage(Float wage) { ... }
        }
     
    導入:
    1.0
    関連事項:
    AttributeOverride, AssociationOverride