При использовании setFetchMode в критериях Hiberate, как установить ограничение для таблицы oneToMany - PullRequest
8 голосов
/ 06 апреля 2011

Я пытаюсь создать запрос критерия Hibernate, который использует 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 Ответ

8 голосов
/ 27 июня 2011

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

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

Criterion child = Restrictions.eq("childAlias.childName", "Albert");
criteria.createAlias("children", "childAlias", CriteriaSpecification.INNER_JOIN);
criteria.add(child);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...