如何在Hibernate标准中访问超类属性

时间:2012-08-09 16:46:10

标签: hibernate polymorphism criteria superclass joined-subclass

我在Hibernate中使用基本的每表类多态。所以我有:

<class name="SuperClass" table="SUPER">
    <id name="anId" type="long">
        <generator class="native"/>
    </id>

    <properties name="uniqueFields" unique="true">
        <property name="one" not-null="true"/>
        <property name="two" not-null="true"/>
    </properties>

    <joined-subclass name="SubClass1" table="SUB1">
        <key column="anId"/>
        <property name="other"/>
    </joined-subclass>

    <joined-subclass name="SubClass2" table="SUB2">
        ...
    </joined-subclass>

    ...

</class>

所以,基本上我有一堆子类,每个子类都包含一些子类特定的数据。我有一个键,但我还需要一个复合唯一约束的其他几个属性。

如果创建标准:

 createCriteria(SubClass1.class).add(Restrictions.eq("one", "VALUE")).list()

由于以下原因导致堆栈转储:无效的列名称'one'

如果我创建基于SuperClass.class的条件,它可以工作,但是需要添加适用于超类和子类的限制(而且这段代码实际上被隐藏在很多其他东西之下)。

我可以找到密钥,但它在两个地方都被声明了。我不能在条件中从子类访问全局属性吗?我需要以某种方式声明它们吗?还是某种类型的演员?

0 个答案:

没有答案