2017-03-09 35 views
0

我有一個HQL如下: from ProductMain作爲pm連接訪存pm.person作爲ps連接訪存pm.personProduct作爲pp連接訪存pm.personReturn作爲pr連接獲取pp.personObjects作爲po其中pp.id在(180,000)和ps.id > =:lowRange和ps.id < =:highRange需要幫助優化HQL以減少返回的列

看來,當我查詢數據庫我得到每列回來,這是讓我從數據庫904錯誤...有什麼方法可以獲得特定的列以減少結果的大小? 就像我有100K結果返回100列每個我只想要10列回來.... 謝謝!

+0

是什麼,使用'select'阻止你,例如從ProductMain中選擇pm.col1,pm.col2作爲pm ...'? –

+0

我可以這樣做嗎?所以我只使用ProductMain中的select pm.col1,pm.col2作爲pm加入獲取pm.person作爲ps加入獲取pm.personProduct作爲pp j等?另外,可以說有其他表與ProductMain如Car,House等鏈接,我只需要從他們幾列...我怎麼做到這一點? – shaselai

回答

0

錯誤-904由不可用資源導致的執行不全。原因原因代碼,資源類型資源類型和資源名稱資源名稱....因此它與您的查詢相關的方面需要查明。

對於只獲取所需的屬性是的,你可能會喜歡寫: -

SELECT pm.col1, 
     pm.col2 
FROM 
from ProductMain as pm 
JOINFETCH pm.person AS ps 
JOINFETCH pm.personproduct AS pp 
JOINFETCH pm.personreturn AS pr 
JOINFETCH pp.personobjects AS po 
WHERE pp.id IN (180,000) 
AND ps.id >= :lowRange 
AND ps.id <= :highRange 
+0

我認爲這個問題是表有百列,當我得到的結果是它超載的資源領域。所以我認爲如果我可以指定我需要的幾列,那麼它會減少這個問題? – shaselai

+0

我認爲這個問題是表有百列,當我得到的結果是它超載的資源領域。所以我認爲如果我可以指定我需要的幾列,那麼它會減少這個問題?我假設如果結果返回,如果我的目標特定列它仍然可以映射到Hibernate對象?什麼其他表連接?如果ProductMain具有指向100列的表的其他鏈接,我如何限制其返回的列? – shaselai

+0

那麼返回的對象是ProductMain對象還是隻包含我想要的那些行的對象列表?我想要使​​用映射爲結果的hibernate對象。 – shaselai