java比maxResults得到的结果要少,因为它有不同的根实体Hibernate
非常感谢您对我的问题的看法
我有两个关系实体:一对多。他们是“员工”和“角色”。(一名员工扮演多个角色)
这是员工的“角色”:
@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()
我尝试了一些解决方案,但都失败了。我想是因为我在实体类中的配置:FetchType.EAGER
但我不想将其更改为LAZY
你能帮我解决吗
共 (0) 个答案