【发布时间】:2016-02-08 14:37:30
【问题描述】:
我有许多类作为继承层次映射到一个表中。
我想使用以下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 所基于的类的属性时它可以工作,但在我上面显示的情况下它似乎不起作用。
【问题讨论】: