我在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的条件,它可以工作,但是需要添加适用于超类和子类的限制(而且这段代码实际上被隐藏在很多其他东西之下)。
我可以找到密钥,但它在两个地方都被声明了。我不能在条件中从子类访问全局属性吗?我需要以某种方式声明它们吗?还是某种类型的演员?