簡體   English   中英

子實體引用如何使用OSIV方法(在視圖中打開會話)在應用程序中返回LazyInitializationException?

[英]How can a child entity reference return a LazyInitializationException in an app using OSIV approach (Open Session In View)?

會話似乎在引用子對象之前就已打開,但是在會話的持久性集合上下文映射(org.hibernate.engineStatefulPersistenceContext.collectionEntries)中沒有特定子對象集的記錄(即使包括了其他子對象)。

父實體和子實體之間的關系由以下定義:

@Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED)
@ManyToMany
@JoinTable(name="rt_vacancy_check",
           joinColumns = @JoinColumn(name="vacancy_id"),
           inverseJoinColumns = @JoinColumn(name="check_name")
)
@BatchSize(size = 10)
private Set<PreEmployCheck> preEmployChecks = new HashSet<PreEmployCheck>();

有什么可能的原因觸發LazyInitializationException?

是否有可能使用Hibernate會話獲取了父對象,並通過了幾個請求(在應用程序或會話范圍內),然后與另一個Hibernate會話一起使用?

OSIV使用線程本地的Hibernate會話,並且不同的請求可以(通常確實)使用不同的Hibernate會話結束。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM