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