簡體   English   中英

使惰性初始化對象為 null,而 object 與 hibernate 代理在 ZF0B4A299C45171493AE3215D69

[英]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 沒有什么能幫助我。 我只是想在惰性加載中將BooksinsertBy 列設為 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.

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