분명 클래스 별로 main 메서드를 실행했기에 앞에서 문제가 없었고,

전혀 상관이 없는 클래스를 돌리는데 문제가 생겼다.

추측컨대 동일한 클래스이름 동일한 클래스파일들이 테스트한다고

여기저기 패키지안에 담아 두어서 그런지 오류가 생긴듯 했다.. 

 

에러는 다음과 같다.

-Duplicate key /패키지/클래스이름.java

-디테일하게 확인해보니 " Build cache is disabled "

-compile 에러가 출력이 되었다.

 

해결순서

1. 관련된 클래스를 모두 지워 주었다.

2. 컴파일된 .클래스 파일을 모두 삭제 했다.

3. https://jobc.tistory.com/207 여기에 나온대로 IntelliJ Cache를 삭제를 해보았으나 실패

4. https://www.inflearn.com/questions/171043 누군가가 인프런에 질문 올린 내용을 참고했다..

   재부팅후에 build내에 있는 파일을 모두 삭제하라고 답변을 달았고,

   build 파일 안에 찾아 보니 source-classes-mapping 파일이 보였다.

   열어보니 앞에서 삭제했었던 관련된 클래스들이 안에 있었고 그 관련된 클래스를 삭제해주었다.

5. 다시 돌리니 제대로 오류없이 돌아간다.

 

트러블슈팅하느라 너무 시간이 오래 걸렸다.. 해결되어서 다행이지만, 다음 공부내용을 더 공부하지 못해 속상하다..

1.Album, Book, Movie 클래스 세팅

 

실습

 

설명

-Item Package로 옮긴 Album,Book,MovieItem클래스로부터 extends를 사용해

 상속받게 한다.

-@Entiyty @Getter @Setter 세팅

 

 

2.ItemAlbum, Book, Movie클래스 상속관계매핑 세팅

실습

a. 싱글테이블전략사용

-상속관계전략을 지정해주어야 한다.(중요!!)

-전략을 부분 클래스에 잡아주어야 하고, 싱글테이블전략을 사용한다.

 

*여기에서는 싱글테이블 전략을 사용

@Inheritance(strategy = InheritanceType.SINGLE_TABLE) 설정을 한다.

 

*@inheritance 타입에 전략 종류 3가지

a. (strategy = inheritanceType.Joined) - 가장 정교화된 스타일

b. (strategy = InheritanceType.TABLE_PER_CLASS)

- 상속받는 클래스를 각각 테이블화 하는 전략

c. (strategy = InheritanceType.SINGLE_TABLE) - 한테이블에 전부 넣는전략

 

#InheritanceType strategy 자세히 보는 방법

(strategy = InheritanceType)에서 Inheritance 우클릭해서

Find Usage->EnumInheritance Type 클릭

 

 

b.@DiscriminatorColumn(name= "dtype")

실습

설명

-ITEM: 앨범, 도서, 화 타입을 통합해서 하나의 테이블로 만들었다.

 dtype 컬럼으로 타입을 구분한다. 컬럼사용을 통해 저장 되어 있는 자식테이블을 구분할 수 있다.

-기본값은 dtype이다.

 

c.@DiscriminatorValue("B") -> Album, Music에도 동일하게 "A", "M"로 세팅

실습

설명

-싱글테이블일 때 book컬럼을 저장할 때 구분할 수 있는 무언가가 DB입장에서 필요하다.

 이 때 넣는 값이다.

-이때 book클래스에서 클래스에 @DiscriminatorValue("B") 로 세팅해준다.

 B값으로 안하고 기본값으로 두면 Book으로 값이 들어간다.

 

 

2. OrderItemItem 연관관계 설정

실습

 

설명

OrderItem ->private Item item 어노테이션 세팅

-@ManyToOne : 주문상품과 상품의 관계, 다대 1관계를 설정해주는 어노테이션

-@JoinColumn(name = "item_id")

*@JoinColumn 어노테이션은 외래 키를 매핑 할 때 사용

*name 속성에는 매핑 할 외래키(연관관계주인) 이름지정

-item_id = foregien key(외래키)

-상품테이블에서 상품에 대한 정보를 매핑

 

-다대일 단방향 관계다

+ Recent posts