가정하자 나는 엔티티를 가지고있다.문제는 <String>
이 목록의 문자열은 많은 AnEntity 개체에서 동일한 값을 가질 수 있습니다. 즉, 많은 AnEntity 객체가 동일한 문자열을 참조 할 수 있습니다.
@ElementCollection에서 제공하는 기본 매핑은 문자열 테이블 (ANENTITY_STRINGS)에 많은 복사본을 남겨 둡니다. 이 방법으로 어떻게 매핑하여 문자열 목록을 저장할 때 중복 문자열의 방대한 테이블이 없도록 값을 고유하게 저장합니까?
필자는 "placeholder"클래스를 사용하려고했는데 그 중 하나의 멤버는 문자열입니다. 불행히도이 방법을 사용하면 관련 테이블의 데이터를 완전히 읽을 수 없게됩니다. BLOB 또는 LOB로 저장 될 것으로 확신합니다.
@ElementCollection
@ManyToMany
private List<StringWrapperClass> strings = new Vector<StringWrapperClass>();
을 그리고 내 엔티티는 같은 같습니다 : 그래서, 예를 들어 내가 대신 목록을 사용하는,이 같은 짓을
@Entity
public class StringWrapperClass implements Serializable {
private String string;
// other stuff, getters, setters, id, etc
}
을하지만 말했듯이, 그건 그냥 ANENTITY_STRINGS에 바이트를 저장합니다. 나는 이것이 이것이 "옳은"방법이라고 상상할 수 없습니다.
private Set<String> strings = new HashSet<String>();
작동하지 않았지만 지속 된 목록에는 여전히 많은 복제본이 있습니다. 명확하게 말하면, 엔티티 자체는 그것의리스트에 중복 스트링을 가지지 않을 것이고, 그것은 모든 중복을 가진 테이블 자체이다. –