2017-03-09 41 views
0

所以我有一個查詢與其他表進行多個連接。返回時出現904錯誤,因爲它返回的數據列太多。我也使用「Join fetch」。加入並獲取並減少返回的數據

我讀到使用「Join」而沒有「Fetch」將返回主表而不是所有東西。我的問題是,1.我將能夠訪問後續表數據,因爲它不會與Join和Join Fetch一起返回?和2.是否有一種方法來減少我需要的列(比如我只需要100箇中的5個),而數據仍然映射到hibernate對象(我讀它成爲一個列表?)。謝謝!

回答

1
  1. 是,通過延遲加載它們
  2. 是的,但你會得到一個List<Object[]>,其中每個數組包含選定的5個屬性。在這種情況下返回的實體是沒有意義的:返回對象的所有不變式都會被違反,因爲幾乎所有的字段都是空的。
+0

因此,給定我的場景,我不想讓每個列返回導致904和想要保持我的Hibernate映射(「不需要的列」上的「默認/ null」值是確定的),什麼是最好的方法?我還讀到,我可以在映射文件中的屬性上設置延遲加載屬性:https://docs.jboss.org/hibernate/orm/3.5/reference/en-US/html/performance.html#performance-fetching - 在20.1.8初始化 - 是另一條路線?我正在查詢100列以上的表格,並且不需要它。謝謝 – shaselai

+0

也從鏈接中提到了投影......但是這只是在java中完成,而不是如果我引入HQL權限? – shaselai

+0

最好的方法是放棄你的回收實體內部有空值的想法。 –