Hibernate의 클래스를 사용하지 않고 어떻게 JPA에서 Map을 매핑 할 수 있습니까?JPA Map <String, String> mapping
답변
다음은 작동하지 않습니까?
@ManyToMany(cascade = CascadeType.ALL)
Map<String,EntityType> entitytMap = new HashMap<String, EntityType>();
EntityType
는 String
을 포함한 모든 개체 유형이 될 수 있습니다. 그것은 나를 위해 작동
import java.io.Serializable;
import java.util.Map;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import org.hibernate.annotations.CollectionOfElements;
import org.hibernate.annotations.MapKey;
@Entity
public class Book implements Serializable{
@Column(name="BOOK_ID")
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long bookId;
@CollectionOfElements(targetElement=java.lang.String.class)
@JoinTable(name="BOOK_CHAPTER",
[email protected](name="BOOK_ID"))
@MapKey ([email protected](name="CHAPTER_KEY"))
@Column(name="CHAPTER")
private Map<String,String> chapters;
public Long getBookId() {
return bookId;
}
public void setBookId(Long bookId) {
this.bookId = bookId;
}
public Map<String,String> getChapters() {
return chapters;
}
public void setChapters(Map<String,String> chapters) {
this.chapters = chapters;
}
}
: 가정하자
나는 장의지도를 가지고있다 도서라는 개체가 있습니다.
Subhendu Mahanta가 준 답변이 맞지만. 그러나 @CollectionOfElements
은 더 이상 사용되지 않습니다. 대신 @ElementCollection
을 사용할 수 있습니다 다음 Map
필드에 대해 별도의 엔티티 클래스를 생성 할 필요가 없습니다
@ElementCollection
@JoinTable(name="ATTRIBUTE_VALUE_RANGE", [email protected](name="ID"))
@MapKeyColumn (name="RANGE_ID")
@Column(name="VALUE")
private Map<String, String> attributeValueRange = new HashMap<String, String>();
. 자동으로 수행됩니다.
동작하는 예제 :
@ElementCollection(fetch=FetchType.EAGER)
@CollectionTable(name = "TABLENAME")
@MapKeyColumn(name = "KEY")
@Column(name = "VALUE")
public Map<String, String> getMap() {
return _map;
}
다 대다 관계의 경우 @CollectionTable 및 @MapKeyJoinColumn (name = "referencing_column_other_table")에서 'joinColumns = @JoinColumn (name = "referencing_column")'이 필요합니다. – Blauhirn
내 코드는 Map 엔티티의
나는 조금 혼란 스러워요. 질문은 Map을 매핑하는 것이었지만 "최상의 답"은 Map 에 관한 것입니다. 내가 놓친 게 있니? –
whiskeysierra
EntityType은 String을 포함하여 모든 엔터티 형식이 될 수 있습니다. –
이것은 얼마나 많은 테이블을 생성합니까? (원래 클래스와 엔티티 타입을위한 키를 가진) 조인 테이블과 EntityType을위한 또 다른 테이블이있다. (주어진 시나리오에서 조인 만있는 테이블 테이블 키 및 매핑 된 문자열)? 저장되는 문자열에 따라 많은 오버 헤드가 발생할 수 있습니다. – RobertG