有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案