Hibernate Criteria API - PullRequest
       11

Hibernate Criteria API

0 голосов
/ 20 июля 2011

Мне нужно выполнить поиск, который включает в себя переход к дочерним элементам, а затем обратно к корню / родителю.Как мне сделать это, используя Criteria API?

В качестве примера у меня есть:

Criteria crit = getSessionFactory().getCurrentSession()
    .createCriteria(TherapistImpl.class);

Теперь мне нужно перейти в класс User, чтобы получить адрес, связанный спользователь (набор адресов):

crit.createCriteria("user")
    .createCriteria("addresses")
    .add(Restrictions.eq("postcode", postCode));

Но теперь, когда я это сделал, мне нужно вернуться назад, чтобы получить другие однозначные ассоциации из родительского класса TherapyImpl, например

crit.createCriteria("therapyProvisions")
    .add(Restrictions.eq("type", searchByValueSelected));

Но hibernate считает, что это относится к критериям пользователя, которые мы связали и создали ранее.

Так я могу создать несколько критериев?Есть ли способ навигации по дереву и т. Д.?

спасибо за ваши комментарии Пол

1 Ответ

1 голос
/ 21 июля 2011

Вместо того, чтобы создавать под-Criteria для ассоциации user, создайте для него псевдоним:

crit.createAlias("user", "userAlias");
crit.add(Restrictions.eq("userAlias.addresses.postcode", postCode);

(Вам может потребоваться создать под-псевдоним для addresses.)

Затем сделайте то же самое для therapyProvisions:

crit.createAlias("therapyProvisions", "therapyProvisionsAlias");
crit.add(Restrictions.eq("therapyProvisionsAlias.type", searchByValueSelected);

Теперь у вас будут внутренние соединения вокруг.

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