Ограничить класс ассоциации в запросе Hibernate Criteria - PullRequest
0 голосов
/ 17 июня 2010

У меня есть объект 'Response', у которого есть свойство 'submitter'. Подающими могут быть один из нескольких классов, включая ученика, учителя и т. Д. *

Я хотел бы иметь возможность выполнить запрос критерия, в котором я выбираю только ответы, представленные учителями - так что это означает наложение ограничения класса на связанный объект. Есть идеи по этому поводу? Я бы хотел избежать прямого SQL или HQL.

Ответы [ 2 ]

2 голосов
/ 18 июня 2010

По словам Гэвина Кинга , с HQL работает следующее:

where foo.class in (...)

Вы пробовали

c.createCriteria("submitter").add(Restrictions.eq("class", Teacher.class))

0 голосов
/ 18 июня 2010

В итоге я использовал собственный SQL.Не самое лучшее, но и не ужасное:

Criteria c = session.createCriteria(Response.class);
c.createCriteria("submitter").add(Restrictions.sqlRestriction("{alias}.person_type='student'"));

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

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