[英]Make Lazy initialization objects as null, while object is with hibernate proxy in jpa
例如我有如下三個類
User{
Integer id;
...
}
Book{
Integer id;
....
@ManyToOne(fetch=FetchType.lazy)
User insertedBy;
}
Author{
Integer id;
List<Book> books;
}
現在我需要在同一頁面中顯示作者列表及其書面書籍,因此我使用jpa存儲庫通過findAll()方法獲取作者。 在這里,我不需要按列插入的書籍,所以我用延遲加載使它們發瘋。
當我嘗試將這些作者列表轉換為 json object 和 Gson 時。 它在用戶 class 中給出延遲加載異常(休眠代理......沒有找到 session......)
我遵循了這個網絡中給出的許多方法,比如TypeAdapters 。 沒有什么能幫助我。 我只是想在惰性加載中將Books的insertBy 列設為 null 。
現在我使用Dto類來避免 insertBy / make insertBy 為 null。
有沒有其他簡單的方法而不將其轉換為 Dto。
我多次遇到這個問題。 一直以來,我都最終轉換為 Dto。
如果有人知道答案,請幫我解決。
Hibernate 中的“延遲加載”意味着在加載父級時實際上並未加載子級,通常是當您在迭代期間嘗試訪問子級時,它會被加載。 In your case you receive this lazy load exception because by the time when gson try to access the child to map it to a JSON object the session has closed already.
可能您可以要求 GSON 在映射到 JSON 時忽略該字段,方法是使用由 ZA79956B0B2E7BDA271 提供的 ExclusionStrategy class。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.