При использовании 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 ответ:
Бог знает, где я был, когда написал это. Я подумал, что лучше выложу ответ, чтобы привести себя в порядок.
Код, который я пропустил, был следующим: -
Criterion child = Restrictions.eq("childAlias.childName", "Albert"); criteria.createAlias("children", "childAlias", CriteriaSpecification.INNER_JOIN); criteria.add(child);