hibernate createCriteria - PullRequest
       3

hibernate createCriteria

0 голосов
/ 17 января 2011

Из источника Hibernate, в Criteria.class, мы имеем:

List cats = session.createCriteria(Cat.class)
  .createCriteria("kittens")
      .add( Restrictions.like("name", "Iz%") )
  .list();

Что такое «котята» здесь?Название колонки?Разве имена столбцов не указываются с помощью ProjectionList?

Спасибо

Ответы [ 2 ]

4 голосов
/ 17 января 2011

Вот полный пример из документов Hibernate :

16.4.Ассоциации

Путем навигации по ассоциациям с помощью createCriteria () вы можете указать ограничения для связанных сущностей:

List cats = sess.createCriteria(Cat.class)
    .add( Restrictions.like("name", "F%") )
    .createCriteria("kittens")
      .add( Restrictions.like("name", "F%") )
    .list();

Второй метод createCriteria () возвращает новый экземпляр Criteria, который ссылается нак элементам коллекции котят.

Итак, «котята» - это свойство типа коллекции для вашей сущности Cat, для которой создается вложенный критерий, который ограничивает котят только именами, начинающимися с F.

Я думаю, это означает, что вы получите только кошек с именем, начинающимся с F, по крайней мере с одним котенком, имя которого начинается с F.

List cats = session.createCriteria(Cat.class)
 .createCriteria("kittens")
   .add( Restrictions.like("name", "Iz%") )
 .list();

В вашем примере, он возвращает всех кошек, у которых хотя бы один котенок назван, начиная сИз.

Я нахожу этот синтаксис немного запутанным, так как вложенность уплощена.Форматировщик исходного кода Java также уберет полезные отступы.

Разве имена столбцов не указаны с помощью ProjectionList?

Это не проекция.Вы все еще получаете все «столбцы».Это выбор (предложение WHERE в терминах SQL).

0 голосов
/ 17 января 2011

Котята - это коллекция, принадлежащая кат. Этот запрос вернет список объектов Cat, коллекции котят которых содержат только кошек, начинающихся с "Iz".

Редактировать: см. Ответ Тило.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...