使用DISTINCT_ROOT_ENTITY Hibernate得到的结果比maxResults少

时间:2016-11-01 12:40:10

标签: java database hibernate distinct

非常感谢您查看我的问题。

我有两个有关系的实体:一对多。他们是"员工"和#34;角色"。(一名员工有很多角色)

这是"角色"在员工:

@OneToMany(cascade = CascadeType.ALL, mappedBy = "staffId", fetch = FetchType.EAGER) private Collection<Role> roleCollection;

我尝试用代码选择指定数量的员工:

Criteria crit = session.createCriteria(Staff.class);
crit.setFirstResult(0);
crit.setMaxResults(20);
crit.setFetchMode("id", FetchMode.SELECT); // This solution in SOF but it not work
crit.addOrder(Order.asc("id"));
crit.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
result = crit.list();

我知道我的问题。   - Criteria.DISTINCT_ROOT_ENTITY从数据库获取数据后删除重复实体   - 但setMaxResults(20);计算结果数包括重复结果。

所以,我的结果列表少于maxResult()

我尝试过在SOF上解决了一些解决方案,但都失败了。我认为因为我在实体类中的配置:FetchType.EAGER但我不想将其更改为LAZY

你可以帮我解决一下吗?

0 个答案:

没有答案