我有一個Web應用程序,用戶在其中進行選擇,並在右下方使用ajax,選擇的詳細信息需要顯示。例如,用戶在頂部框架和底部框架中選擇一個人,所有人的詳細信息都會顯示出來。有一大堆人在懶惰地加載。當任何集合被調用時,我都會得到一個預期的懶惰初始化異常。我該如何避免這種情況。如何在ajax調用後重新連接entManager。請求範圍內的重新附加實體entitymanager
0
A
回答
-1
我走了本文提出的解決方案。
http://9mmedia.com/blog/?p=272
感謝您花時間回覆。
1
這樣做有幾個方法,你在做什麼,在這裏:
- 使用預先加載在Person實體所有的收藏品,但是這可能adversly影響性能。
- 如果您使用的是JPA 2.0,最簡單的方法是使用OpenEntityManagerInView攔截器。然後,您可以使用JSON Jackson完成json-ify Person實體並將JSON返回到視圖。
- 如果選項#1和選項#2不可行,您應該嘗試加載實際的集合對象而不是代理。應該做的是,對於每個集合(可以說集合A)在會話/事務關閉之前調用A.get(0).someGetter()。這將加載集合中對象的實際實例A.這應該爲每個集合完成。在某些情況下,您可以有特定的方法來執行此操作,例如這種情況。
- 在關閉會話/事務之前,將完整的Person實體轉換爲其他類型的對象,例如JSON(因爲您在此處使用ajax)。爲此,迭代所有集合中的所有對象,並將其填充到JSON對象中並返回相同的結果。
1
嘗試從已從會話中分離的實體獲取集合時發生LazyInitializationException。
爲此,您必須重新掛接實體,即將其進行管理。首先驗證對象是否與會話相關聯。
contains(Object object) : Check if this instance is associated with this Session.
基於對象的狀態,可以再次需要&此後的時候可以獲取相關的收藏品讀其狀態。
refresh(Object object) : Re-read the state of the given instance from the underlying database.
相關問題
- 1. 範圍內的HTTP請求
- 2. 附加重複的現有實體到一個新的實體
- 3. 在雄辯的模型範圍內檢索請求實例
- 4. 206部分請求 - 重疊字節的單範圍請求
- 5. CDI - 會話範圍 - 每個請求範圍的新會話範圍
- 6. JSF請求範圍Bean將根據請求創建新的bean
- 7. JSF中的請求範圍
- 8. 在Log4J的請求範圍
- 9. Bootstrap範圍:如何附加bootstrap範圍?
- 10. JSF:刷新請求範圍屬性AJAX請求後
- 11. 將請求體附加到jQuery ajax
- 12. MySQL EntityManager範圍查詢
- 13. JSF請求範圍形式
- 14. 範圍請求cxf jaxrs
- 15. Spring Rest Web請求範圍
- 16. OAuth2請求其他範圍
- 17. 彈簧請求範圍bean
- 18. Jquery移動雙範圍滑塊重新加載新範圍
- 19. EntityManager的合併插入新的實體
- 20. 堅持一個實體,而不將其附加到EntityManager
- 21. 實體Bean內的EntityManager如何到
- 22. 附加cookie請求
- 23. 如何在實體內使用entityManager?
- 24. 範圍和實體類
- 25. 訪問會話範圍從請求Bean範圍的bean
- 26. 春季的線程範圍vs請求範圍
- 27. 刷新NG-重複而不$範圍內,沒有新的要求斷絕
- 28. 載體,在此範圍內
- 29. 301通配符重定向到HTTPS,站點範圍內的,所有的請求
- 30. jQuery雙範圍滑塊重新加載
鏈接無效 – Andre 2015-03-26 12:51:10