17 Ekim 2018 Çarşamba

JPA @PrimaryKeyJoinColumn Anotasyonu

Giriş
Genellikle kalıtım varsa, yani @Inheritance(strategy=InheritanceType.JOINED) ve ata sınıftaki primary key alanı ile kalıtan sınıftaki foreign key alanı isimleri farklı ise kullanılır.

Açıklaması şöyle.
The PrimaryKeyJoinColumn annotation specifies a primary key column that is used as a foreign key to join to another table.
Kalıtan sınıftaki belirtilen sütun ile ata sınıftaki primary key alanı join yapılır. Böylece kalıtan sınıf ata sınıftan ilave alanlar elde edebilir.

Yani ata sınıf primary key üretir bu değer kalıtan sınıfa foreign key olarak yazılır ve normalde aynı isimli sütunların olması beklenir. Parent için id sütunu varsa Child tablosunda da id isimli sütun olması beklenir, ancak sütun ismi chid_id gibi bir şeyse bu sütun ismini belirtmek için kullanılır.

name alanı
Açıklaması şöyle.
If the @PrimaryKeyJoinColumn is not set, the primary key / foreign key columns are assumed to have the same names as the primary key columns of the primary table of the superclass.
Örnek
Şöyle yaparız.
@PrimaryKeyJoinColumn(name="CUST_ID")
public class ValuedCustomer extends Customer { ... }
referencedColumnName alanı
Şöyle yaparız.
@OneToOne (fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@PrimaryKeyJoinColumn(name="user_id", referencedColumnName="user_id")
private User user;

Hiç yorum yok:

Yorum Gönder