0
我有兩個實體:@OneToMany重複條目
@Entity
@Table(name="tblrelease")
public class Release implements Serializable {
...
@OneToMany(mappedBy = "release")
public Set<ReleaseIssue> getIssues() {
return issues;
}
}
和
@Entity
@Table(name="tblissue")
public class ReleaseIssue implements Serializable {
...
@ManyToOne()
@JoinColumn(name = "relId", nullable = false)
public Release getRelease() {
return release;
}
}
如果我使用這個設置我得到以下異常:org.hibernate.LazyInitializationException:無法初始化懶洋洋地收集作用:... 主要原因是jsp想要訪問發佈失敗的問題,因爲它想要在會話之外訪問代理。
如果我使用FetchType = EAGER,我在版本中有重複。由於發佈對象具有問題,集合包含一個發佈對象的很多重複項。
不是一個答案,但是您的Set,一個設計爲不允許重複的集合類具有重複的事實表明問題存在問題 - 您的實體上沒有正確的hashCode()和equals()方法。讓您的IDE生成這些會使重複的問題消失,但您通常不希望EAGER加載oneToMany。但是,如果將'LazyInitializationException'粘貼到右上角的搜索框中,則會出現大量重複的問題。 – Gimby
嗨Gimby,謝謝你的幫助。它工作正常。如果您將文本粘貼到答案中,我會將其標記爲正確的答案。 –