26 Haziran 2018 Salı

JPA @DiscriminatorValue Anotasyonu

Giriş
Single Table Inheritance varsa kullanılır. Eğer @DiscriminatorVaue anotasyonuna değer vermezsek sınıfın ismini alır.

Örnek
Elimizde bir ata sınıf olsun.
@Getter
@Setter
@Table(name = "ANIMAL")
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(discriminatorType = DiscriminatorType.STRING, name = "TYPE")
public class Animal {

  @Id
  @Column(name = "ID")
  private String id;

  @Column(name = "NAME")
  private String name;

}
Kalıtan sınıflar olsun.
@Entity
@DiscriminatorValue("REPTILE")
public class Reptile extends Animal {

}
Kalıtan sınıflar olsun.
@Entity
@DiscriminatorValue("BIRD")
public class Bird extends Animal {

}
Tablo satıları şöyledir.
---------------------------
ID||NAME      ||TYPE     ||
---------------------------
1 ||Crocodile ||REPTILE  ||
---------------------------
2 ||Dinosaur  ||REPTILE  ||
---------------------------
3 ||Lizard    ||REPTILE  || 
---------------------------
4 ||Owl       ||BIRD     ||
---------------------------
5 ||parrot    ||BIRD     ||
---------------------------


Hiç yorum yok:

Yorum Gönder