Giriş
@Embedded olarak işaretli sınıfın içinde halihazırda ManyToOne gibi bir ilişki olsun. Bu @Embedded sınıfı bir başka sınıf içinde tekrar kullanmak isteyelim. Bu durumda ilişkiyi tekrar tanımlamak gerekir.
name Alanı
@Embeddable içindeki field name ile aynı olmak zorundadır.
Örnek
Elimizde şöyle bir kod olsun. Bu kod 3 tablo yaratır. A tablosu, C tablosu ve A_C için join tablosu
@Embedded olarak işaretli sınıfın içinde halihazırda ManyToOne gibi bir ilişki olsun. Bu @Embedded sınıfı bir başka sınıf içinde tekrar kullanmak isteyelim. Bu durumda ilişkiyi tekrar tanımlamak gerekir.
name Alanı
@Embeddable içindeki field name ile aynı olmak zorundadır.
Örnek
Elimizde şöyle bir kod olsun. Bu kod 3 tablo yaratır. A tablosu, C tablosu ve A_C için join tablosu
@Entity
public class A {
@Id
@GeneratedValue
private Long id;
@Embedded
private B b;
//getters and setters
}
@Embeddable
public class B {
@OneToMany
private List<C> cList;
//getters and setters
}
@Entity
public class C {
@Id
@GeneratedValue
private Long id;
//other fields, getters and setters
}
Eğer join tablosu istemezsek B sınıfını şöyle yaparız. Bu durumda C tablosuna A_ID sütunu eklenir.@OneToMany
@JoinColumn(name="A_ID")
private List<C> cList;
Eğer C tablosundaki bu sütunun ismini değiştirmek istersek A sınıfına şöyle yaparız.@AssociationOverride(name= "cList",
joinColumns = @JoinColumn(name="SOME_NAME_FOR_JOIN_COLUMN_IN_TABLE_C"))
@Embedded
private B b;
Hiç yorum yok:
Yorum Gönder