나는 절전 모드를 사용하고 빈 데이터베이스를 채우기 위해 코드를 작성하고있다. 나는 문장, 문구, 그리고 편지를 고집하는 척 해봅시다. 문구와 문장 모두에서 문자가 발생하기 때문에 나는 각각 LetterEntity
에 SentenceEntity
에 대한 참조가 있고 각각 SentenceEntity
에 문자 집합이 있어야합니다.Hibernate : 영속 콜렉션에서 영속 클래스를 재사용
@OneToMany(cascade={CascadeType.PERSIST, CascadeType.MERGE}, fetch=FetchType.LAZY)
@JoinColumn(name="sentenceid")
@Sort(type=SortType.NATURAL)
public SortedSet<LetterEntity> getLetters() {
return this.letters;
}
지금까지 문제가 없습니다. PhraseEntity
에 글자와 구문의 하위 집합이 겹칠 수 있기를 바라므로 글자가 여러 개일 수 있습니다. 이를 위해서는 관계에 대한 추가 표가 필요합니다.
@OneToMany(fetch = FetchType.LAZY)
@JoinTable(name = "phrase_letters", joinColumns = @JoinColumn(name = "phraseid"), inverseJoinColumns = @JoinColumn(name = "letterid"))
@Sort(type=SortType.NATURAL)
public SortedSet<TypeEntity> getLetters() {
return this.letters;
}
나는 데이터베이스를 채우는
은, 난 그냥 문장 컬렉션에 추가 할 수있는 문자의setSentenceId
설정합니다. 그러나
setLetters
을 사용하여 문구에 Letter를 추가하면 Hibernate는 Letter를 다시 유지하려고 시도하고 예외가 발생합니다. 최대 절전 모드를 사용하지 않고 프레이즈에 문자를 다시 추가하려면 어떻게합니까?
업데이트 : 나는 단정적 인 연관성에 대해 읽는 것이 매우 도움이된다는 것을 알았습니다. 내 질문의 일부 있지만
http://docs.jboss.org/hibernate/orm/4.1/manual/en-US/html_single/#collections-bidirectional
, 나는 많은 전단 사 협회가 설정했다. 대량 삽입이 훨씬 빨라지기 때문에 부분적으로 필요한 부분을 찾습니다. 콜렉션에 요소를 추가 할 때, Hibernate는 갱신 질의를 보낸다.업데이트 : 나는 바보입니다. Phrases와 Letters 사이의 관계는 Many-To-Many이고 핵심 제약 조건을 위반했기 때문에 실제로 예외가 발생했습니다.
나는 문장을 유지하고 그 문장을'문장 '으로 설정 한 다음 문장에 문자를 추가한다. 어쩌면 그것이 문제 일 수 있습니다. – schmmd