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()
Invalid column name 'one'が原因でスタック ダンプが発生します。
SuperClass.class に基づいて基準を作成すると機能しますが、スーパークラスとサブクラスの両方に適用される制限を追加する必要があります (実際、このコードは他の多くのものの下に埋もれています)。
キーに到達できますが、両方の場所で宣言されています。基準のサブクラスからグローバル プロパティにアクセスできませんか? 何らかの方法でそれらを宣言する必要がありますか? それともある種のキャスト?