Hibernate Criteria - 如何限制返回的子类?

时间:2011-10-20 01:06:48

标签: hibernate

我有一个非常丰富的实体类层次结构。我试图将某些查询中的结果限制为某些实体类列表中的结果。我正在做以下事情......

    detachedCriteria.add(Restrictions.disjunction().
            add(Restrictions.eq("class", FabricData.class)).
            add(Restrictions.eq("class", HostData.class)).
            add(Restrictions.eq("class", StorageSystemBase.class)).
            add(Restrictions.eq("class", SwitchData.class))
    );

然而,我收到错误......

[testng-wrapper] java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.Integer
[testng-wrapper]        at org.hibernate.type.descriptor.java.IntegerTypeDescriptor.unwrap(IntegerTypeDescriptor.java:36)

那么如何从查询中列出我想要的子类?

-Robert

1 个答案:

答案 0 :(得分:0)

我假设您使用了鉴别器......

您尝试的方式可以通过HQL实现,但对于Criteria,您需要指定鉴别器值而不是Class:

detachedCriteria.add(Restrictions.eq("class", "FABRICDATA_DISCRIMINATOR"));