При использовании setFetchMode в критериях Hiberate как установить ограничение на таблицу oneToMany


Я изо всех сил пытаюсь создать запрос критериев гибернации, который использует setFetchMode(... SELECT) и накладывает ограничение на возвращаемые дочерние записи. Если я использую creteAlias, как рекомендуется, он производит внутреннее соединение, тем самым делая точную пагинацию практически невозможной.

Код будет выглядеть так: -

Criteria criteria = this.getSession().createCriteria(Mother.class);
criteria.addOrder(Order.asc("title"))
// .createAlias("children", "childrenAlias") had to remove
.add(Restrictions.eq("childAge", "5")) // how do I reference childAge?
.setMaxResults(details.getMaxRows())
.setFirstResult(details.getStart())
.setFetchMode("children", FetchMode.SELECT);
1 7

1 ответ:

Бог знает, где я был, когда написал это. Я подумал, что лучше выложу ответ, чтобы привести себя в порядок.

Код, который я пропустил, был следующим: -

Criterion child = Restrictions.eq("childAlias.childName", "Albert");
criteria.createAlias("children", "childAlias", CriteriaSpecification.INNER_JOIN);
criteria.add(child);