Когда у меня есть запрос Criteria от корневого элемента (например, Company) с fetchMode JOIN и псевдонимом LEFT_OUTER_JOIN в коллекцию (например, Employees), мне не удается разбить страницы на отдельные компании (с MaxResults и firstElement)).
criteria = sessionFactory.getCurrentSession().createCriteria(Company.class);
criteria.createAlias("employees", "employees", JoinType.LEFT_OUTER_JOIN);
criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
criteria.setFetchMode("employees", FetchMode.JOIN);
criteria.setFirstResult((pageNb - 1) * nbPerPage);
criteria.setMaxResults(nbPerPage);
Если я спрашиваю о первых 20 компаниях, у меня есть только 3, потому что в первом из результатов занято 18 сотрудников.но с загруженными сотрудниками, чтобы оптимизировать ленивую загрузку.