我想有多個表後的分頁加入標準。分頁問題,而在休眠標準加入
的問題是:
當我加入表產生的重複記錄。 適用於記錄集的分頁(帶有重複)。
我使用這個criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);刪除重複的記錄。
例如: 通常我將去除重複之後,得到了10條記錄。 當我設置我的開始索引爲1,結束索引爲5時,我應該得到5條記錄,但它返回2或3(大約)。這取決於加入。
請幫我一把。
我想有多個表後的分頁加入標準。分頁問題,而在休眠標準加入
的問題是:
當我加入表產生的重複記錄。 適用於記錄集的分頁(帶有重複)。
我使用這個criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);刪除重複的記錄。
例如: 通常我將去除重複之後,得到了10條記錄。 當我設置我的開始索引爲1,結束索引爲5時,我應該得到5條記錄,但它返回2或3(大約)。這取決於加入。
請幫我一把。
的這裏的問題是beeing應用的兩種不同的技術。
所以,如果實際上有2行加1加另一個,轉換將導致3個對象。
正確的(也許是最好的)的方式,如何避免這一點,是不使用集合的提取。如果我們需要收集來顯示,我們應該(例如,使用批量大小,以減少選擇的數量)
如果我們需要收集被用作過濾器懶洋洋地加載它,我們應該把它轉化爲subquery
,並再次執行根實體的分頁,以取代IN(子查詢)子句
想象一下,父表:
ParentId, Code
1 , 'P1'
2 , 'P2'
3 , 'P3'
子表:
ChildId , Code , ParentId
1 , 'C1' , 1
2 , 'C2' , 1
3 , 'C3' , 2
4 , 'C4' , 2
5 , 'C5' , 3
如果我們要求一個Parent
,並且還加入了Child
集合,我們將
我在這裏回答了這個:Pagination with Hibernate Criteria and DISTINCT_ROOT_ENTITY
你需要做三件事情:1)獲得總計數,2)得到你想要的行的ID,然後3)讓你的數據的ID foun d。在訂單正確後,它確實不是那麼糟糕,甚至可以創建一個通用方法,並將它發送給一個分離的標準對象以使其更加抽象。
感謝您的回覆,但我的情況下,我必須在Criteria中使用相同的;我不能直接將'IN'用於另一個標準的條件,因爲我必須使用DetachedCriteria。 但在DetachedCriteria中,我無法應用分頁。 – Ramkumar