非常感谢您查看我的问题。
我有两个有关系的实体:一对多。他们是"员工"和#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