我已经为大数据库表实现了ScrollableResults
的使用,一切都运行良好,直到我想使用连接为另一个表做同样的事情。
我遇到问题的实体有一些一对多关联,所以我必须使用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件事:
scroll()
时,DISTINCT_ROOT_ENTITY不能很好地互动”。这使得ScrollableResults
对我无用,但我仍然需要它,因为存储量很大。您是否知道如何使用DISTINCT
来实现滚动结果?或任何解决方法?
Hibernate版本:4.2.4; JDK 7; DB:MSSQL
答案 0 :(得分:0)
按&#34;添加&#34;顺序使用根实体的Id查询子句。