Spring Boot
[JPA] Entity Column에 Map 사용하기
유저인사이트 박준호
2022. 10. 6. 11:31
728x90
public class UserImageManage {
@Id
@EqualsAndHashCode.Include
private Integer id;
...
@Fetch(FetchMode.SELECT)
@ElementCollection(fetch = FetchType.EAGER)
@CollectionTable(name = "user_image_mapping", joinColumns = @JoinColumn(name = "user_image_manage_id", referencedColumnName = "id"))
@MapKeyColumn(name = "user")
@Column(name = "image")
private Map<Integer, Integer> userImageMap = new HashMap<>();
...
}
@MapKeyColumn : Key에 사용될 컬럼
@Column : Value에 사용될 컬럼
Value에 List 데이터를 사용할 수도 있는데
@ElementCollection(fetch = FetchType.EAGER)
@CollectionTable(name = "user_image_mapping", joinColumns = @JoinColumn(name = "user_image_manage_id", referencedColumnName = "id"))
@MapKeyJoinColumn(name = "user")
@Column(name = "image")
@Convert(converter = IntegerListToStringConverter.class, attributeName = "value")
private Map<Integer, List<Integer>> userImageMap = new HashMap<>();
@MapKeyColumn 이 아닌 @MapKeyJoinColumn을 사용해줘야 하고,
Value에 들어갈 데이터를 @Convert를 이용해 나열된 문자열로 변환하고 저장하면 됩니다.
박준호 / 선임연구원
Junho Park / 서비스R&D팀
728x90