Giriş
@Embeddable ile çok kullanılan bir diğer anotasyon ise AttributeOverrides. Bu anotasyon ile nesnenin başka bir yerde tanımlanmış özelliği değiştiriliyor.
Örnek
Aşağıdaki kodda Address için farklı sütun isimleri kullanılıyor.
Eğer iç içe iki @Embedded varsa alan isimlerini nokta ile ayırmak gerekir. Şöyle yaparız.
@Embeddable ile çok kullanılan bir diğer anotasyon ise AttributeOverrides. Bu anotasyon ile nesnenin başka bir yerde tanımlanmış özelliği değiştiriliyor.
Örnek
Aşağıdaki kodda Address için farklı sütun isimleri kullanılıyor.
@Embeddable
public class Address {
String email;
String address;
String city;
String state;
String zip;
String country;
}
@Entity
@Table(name="customer")
public class Customer {
@Embedded
@AttributeOverrides({
@AttributeOverride(name="address", column=@Column(name="ship_addr"),
@AttributeOverride(name="city", column=@Column(name="ship_city"),
@AttributeOverride(name="state", column=@Column(name="ship_state"),
@AttributeOverride(name="zip", column=@Column(name="ship_zip"),
@AttributeOverride(name="country", column=@Column(name="ship_country")
})
Address shippingAddress;
@Embedded
@AttributeOverrides({
@AttributeOverride(name="address", column=@Column(name="bill_addr"),
@AttributeOverride(name="city", column=@Column(name="bill_city"),
@AttributeOverride(name="state", column=@Column(name="bill_state"),
@AttributeOverride(name="zip", column=@Column(name="bill_zip")
})
Address billingAddress;
}
Örnek
Eğer iç içe iki @Embedded varsa alan isimlerini nokta ile ayırmak gerekir. Şöyle yaparız.
@Embedded
@AttributeOverrides( {
@AttributeOverride(name="coveredByGrant.amount",
column = @Column(name="contracted_coveredByGrant") ),
@AttributeOverride(name="foundedFromOwnResources.amount",
column = @Column(name="contracted_foundedFromOwnResources")),
@AttributeOverride(name="personalContribution.amount",
column = @Column(name="contracted_personalContribution"))
} )
private ReportCostValues contracted;
Hiç yorum yok:
Yorum Gönder