Set 타입 맵핑하기

  • 외례키를 포함하여 모든 컬럼을 복합키로 사용한다.
@CollectionOfElements(targetElement = java.lang.String.class)
@JoinTable(name = "ITEM_IMAGE", joinColumns = @JoinColumn(name = "ITEM_ID"))
@Column(name = "FILENAME", nullable = false)
private Set<String> images = new HashSet<String>();

List 타입 맵핑하기

  • 컬렉션의 index를 주키로 사용하는 테이블을 정의한다.
  • base 속성으로 시작 index를 정할 수 있다. 기본은 0
@CollectionOfElements
@JoinTable(name = "ITEM_IMAGE", joinColumns = @JoinColumn(name = "ITEM_ID"))
@IndexColumn(name = "POSITION", base = 1)
@Column(name="FILENAME")
private List<String> images2 = new ArrayList<String>();
  • 위 설정에서 @IndexColumn을 빼먹으면, Bag 타입으로 맵핑된다.

Map 타입 맵핑하기

  • 맵의 키가 복합 타입일 때는 해당 타입의 모든 속성을 키로 등록할 수 있다.
  • @MapKey는 JPA가 아니라 하이버 애노테이션이다.
@CollectionOfElements
@JoinTable(name = "ITEM_IMAGE", joinColumns = @JoinColumn(name = "ITEM_ID"))
@MapKey(columns = @Column(name = "IMAGENAME"))
@Column(name = "FILENAME")
private Map<String, String> images3 = new HashMap<String, String>();