спящий режим: использование критериев для доступа к объектам внутри объектов - PullRequest
1 голос
/ 23 ноября 2010

Я использую критерии для получения списка уведомлений, который содержит активных пользователей. Проблема в том, что я получаю следующую ошибку:

org.hibernate.QueryException: could not resolve property: user.active of: com.company.Notification

Кроме проверки того, что пользователь активен, мне нужно проверить, что уведомление того типа, который я хочу. Вот мой код:

session.createCriteria("com.company.Notification")
    .add(Restrictions.or(Restrictions.eq("type", "email"), 
    .add(Restrictions.eq("user.active", true)).list();

Уведомление имеет поле User user, которое в свою очередь имеет поле Boolean active

Я смотрю на этой странице: https://forum.hibernate.org/viewtopic.php?t=948576&highlight=subproperty

но я все еще не пытаюсь создать критерий, который обращается к чему-либо в родительском и дочернем объектах.

1 Ответ

6 голосов
/ 23 ноября 2010

попробуйте это:

session.createCriteria("com.company.Notification")
    .add(Restrictions.or(Restrictions.eq("type", "email")
    .createCriteria("user") // this creates the join on the user table...
    .add(Restrictions.eq("active", true)).list();

надеюсь, что помогло ...

...