一、問題描述
專案使用ssh框架,當獲得乙個list,然後用gson外掛程式轉化為json時候出問題。出問題**如下
public string choosecustomer() catch (ioexception e)
return null;
}
使用debug後發現:
1、list獲得到了資料
2、**執行到2和3之間的兩行**的時候,就出問題了。既不報錯,後面的**也不執行了。
(真tm,你倒是給我報個錯啊)
二、問題解決
方式一:然後,我想起了hibernate的懶載入是不是和gson轉換起衝突了。customer物件預設是lazy載入,而且裡面有引用型別的屬性,而且該物件也是預設懶載入。
我沒有修改customer的lazy載入。只是讓customer裡面的引用型別物件改為不是懶載入。
然後就tm沒有問題了。
方式二:使用gson的時候設定那個引用屬性不轉換。
三、總結
1、hibernate懶載入,當呼叫get方法的時候,才會載入該物件。
2、當呼叫gson轉換的時候並沒有呼叫customer裡面引用型別的get方法,只呼叫了customer裡面的get方法,所以會報錯。
Hibernate懶載入策略
hibernate懶載入策略 概念 lazy的概念就是只有在真正使用物件時,才會去建立。對hibernate而言,就是真正載入時才發出載入sql語句。延遲載入機制是為了避免一些無謂的效能開銷而提出來的。重點牢記 1.load支援延遲載入,get不支援延遲載入。2.lazy的生命週期與session相...
hibernate懶載入原理
懶載入的意思是查詢的時候不會立刻訪問資料庫,而返回的是 物件,當真正去使用物件欄位的時候才會訪問資料庫。load object,serializable 前提實體類不能是final的。根據id查詢 查詢返回的是 物件,不會立刻訪問資料庫,是懶載入的。當真正去使用物件的時候才會訪問資料庫。用load的...
Hibernate懶載入策略
hibernate懶載入策略 概念 lazy的概念就是只有在真正使用物件時,才會去建立。對hibernate而言,就是真正載入時才發出載入sql語句。延遲載入機制是為了避免一些無謂的效能開銷而提出來的。重點牢記 1.load支援延遲載入,get不支援延遲載入。2.lazy的生命週期與session相...