У меня есть несколько классов, отображаемых как иерархия наследования в одну таблицу.Может ли запрос на спящий режим для подклассов использовать Restrictions.in?
Я хотел бы использовать следующий Criteria
запрос, но это приводит к ClassCastException
поскольку Class
не может быть приведен к String
.
Set<Class> childClasses = new HashSet<>();
childClasses.add(Child1.class);
childClasses.add(Child2.class);
session.createCriteria(Parent.class)
.add(Restrictions.in("class", childClasses)
.list();
Хочу отметить, что Hibernate не поддерживает задания одного класса с использованием Restrictions.eq("class", childClass)
, так что я могу обойти с помощью Disjunction
». Я также знаю, что это сработает, если мое рестрикцию будет основано на строках дискриминатора для каждого подкласса, но я бы предпочел не использовать их.
Можно использовать Criteria
таким образом? Принятый ответ this question предполагает, что он работает, когда класс является свойством класса, на котором базируется ваш Criteria
, но он, похоже, не работает в случае, показанном выше.
Спасибо. Я зарегистрировал дефект на https://hibernate.atlassian.net/browse/HHH-10517 – Mark
И дефект был отклонен, так как критерий устарел в Hibernate 5. – Mark
@Mark Я отправил [запрос на извлечение] (https://github.com/hibernate/hibernate-orm/pull/1277), это было принято. Исправление будет доступно как на 5.1, так и на 5.0. –