Health-Genie

[배운점] @ElementCollection

j9972 2023. 11. 24. 21:35
728x90

해당 애노테이션은 값 타입의 컬렉션을 사용할 때 사용하는 애노테이션입니다.

RDB는 컬렉션 같은 형태의 데이터를 컬럼에 저장할 수 없기에, 별도의 테이블을 생성해 관리합니다

 

엔티티에서 기본타입으로 켈렉션을 만드려고 할때 에러가 발생했습니다.

List<String> part = new ArrayList<>();

 

이런식으로 사용하니 "'기본' 타입 속성의 컨테이너가 될 수 없다" 라는 에러가 납니다

위에 설명 했듯이 컬렉션 같은 형태의 데이터를 컬럼에 저장할 수 없기에 나타나는 에러인데, 아래와 같이 작성하면 해결이 됩니다..

@ElementCollection
private List<String> part = new ArrayList<>();

 

이렇게 해서 @Entity가 아닌 Basic type 이나 Embeddable class로 정의된 컬렉션을 테이블로 생성해 OneToMany 관계로 다룹니다.

 

아래는 postman에서 데이터를 넣는 방식입니다.

parts : ["어깨", "하체"]

 

 

참조

https://ttl-blog.tistory.com/121