1
我已經實現了大數據庫表的使用,一切工作完美,直到我想對另一個表使用聯接。如何使用Hibernate查詢| Criteria.scroll()與DISTINCT沒有重複
我遇到問題的實體具有一些一對多關聯,因此我必須使用DISTINCT
以避免重複。當我使用list()
獲得查詢結果時,一切正常。但是當我使用scroll()
,DISTINCT
似乎完全被忽略 - 我只是得到很多重複。
Query query = gameSession.createQuery("SELECT DISTINCT c FROM City c JOIN FETCH c.inhabitans i");
這種運作良好,列表中有沒有重複:
List<City> list = query.list();
這是不工作(給很多重複樣就不會有DISTINCT使用):
ScrollableResults sr = query.scroll(ScrollMode.FORWARD_ONLY);
一切當我使用Criteria而不是Query時也是如此。我發現,只有3對這一具體問題的事情:
- 幾個問題,像我這樣沒有答案,
- 一個bug描述,可能是完全一樣像我這樣的情況,但應該已經固定時間長之前,
- 對SO回答之一的小評論告訴「當使用
scroll()
時,DISTINCT_ROOT_ENTITY不會很好地交互」。
這使得對我無用,但我仍然需要它,因爲大量的內存保存。你知道如何用DISTINCT
實現滾動結果的使用?或任何解決方法?
Hibernate版本:4.2.4; JDK 7; DB:MSSQL
您是否嘗試過將其轉換爲條件+ CriteriaSpecification.DISTINCT_ROOT_ENTITY? –
是的,結果是一樣的。 – James