Spring/Annotaion

@DiscriminatorColumn (+ @DiscriminatorValue)

밍구밍구밍 2024. 5. 6. 15:47
코드에서 Movie extends Item 이라고 가정

 

1. @DiscriminatorColumn

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn
public class Item {

슈퍼클래스에 @DiscriminatorColumn 선언 시

슈퍼 클래스 ITEM DB 에 DTYPE 에 어떤 서브클래스와 JOIN 되었는지 확인 가능하다 (MOVIE)

 

Item DB 에 JOIN 된 객체

try {
    Movie movie = new Movie();
    movie.setDirector("봉준호");
    movie.setActor("원빈");
    movie.setName("아저씨");
    movie.setPrice(10000);
    em.persist(movie);

    em.flush();
    em.clear();

    Movie movie1 = em.find(Movie.class, movie.getId());

    tx.commit();
}

(** main() 코드)

 

 

 

2. @DiscriminatorValue

- 서브클래스(Movie에 @DiscriminatorValue("한국영화") 라고 이름을 임의로 지정할 수 있다.

@Entity
@DiscriminatorValue("한국영화")
public class Movie extends Item {

    private String director;
    private String actor;

 

DB 출력결과 

ITEM DB 에 DTYPE 의 이름이 바뀐것을 확인 할 수 있다.