(多分それ以前)を使用すると、テーブルごとの階層モデルを使用している場合は、ネストされた要素を使用することができます。
例のクラス構造:
Word (has property "text", string)
- Subject (adds property "plural", boolean)
- Pronoun (adds property "masculine", boolean)
- ProperNoun (adds property "person", boolean)
- Verb (adds property "past_tense", boolean)
例HibernateマッピングXML:
<class name="test.Word" table="words">
<id name="id"><generator class="native"/></id>
<discriminator column="word_type" type="string"/>
<property name="text"/>
<subclass name="test.Subject">
<property name="plural"/>
<subclass name="test.ProperNoun">
<property name="person"/>
</subclass>
<subclass name="test.Pronoun">
<property name="masculine"/>
</subclass>
</subclass>
<subclass name="test.Verb">
<property name="past_tense"/>
</subclass>
</class>
はその後、次のコードを実行した後に(私はクラスコードを残してきた、それだけで非常に基本的なと正直ですこの例ではオブジェクトタイプ自体が重要です)。
HibernateUtil.beginTransaction();
HibernateUtil.getCurrentSession().persist(new Word("blue"));
HibernateUtil.getCurrentSession().persist(new Subject("chairs", true));
HibernateUtil.getCurrentSession().persist(new ProperNoun("James", true));
HibernateUtil.getCurrentSession().persist(new Pronoun("he", false, true));
HibernateUtil.getCurrentSession().persist(new Verb("sat", true));
HibernateUtil.commitTransaction();
d
id, word_type, text, plural, person, masculine, past_tense,
1, test.Word, blue, NULL, NULL, NULL, NULL
2, test.Subject, chairs, 1, NULL, NULL, NULL
3, test.ProperNoun, James, 0, 1, NULL, NULL
4, test.Pronoun, he, 0, NULL, 1, NULL
5, test.Verb, sat, NULL, NULL, NULL, 1
とバックの適切なタイプで結果オブジェクトの一覧を照会:
HibernateUtil.beginTransaction();
List<Word> words = HibernateUtil.getCurrentSession().createCriteria(Word.class).list();
for (Word w:words)
System.out.println(w);
HibernateUtil.commitTransaction();
プリント:
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
参照セクションhttp://docs.jboss.org/hibernate/core/4.0/manual/en-US/html/inheritance.htmlの10.1.1をatabaseは、この情報を含んで終わります残念ながら、入れ子にされたサブクラスが許可されていることは明確に示されていませんが、実験するのは簡単なことです(これは古い文書と本質的に同じです)。
私は、Hibernateのドキュメントが非常に整理されていないことに同意します。すべてがそこにありますが、整理された方法について何かが私に完全な情報を見つけることを非常に困難にしていることがわかります。主に相互参照の過度の使用と、すべてのベースをカバーしていないユースケース指向のレイアウトによるものです。ただし、情報はです。
私は階層ごとのパターンでそれを行う方法を考え出しました。休止状態のファイルは、そのドキュメントに示されている例のようには見えません。文書は十分に使い果たされていません。 – egervari