私はこのHibernate Mapping Cheat Sheetから次多対多マッピング例を取っている:Hibernateの読み取り専用コレクション・マッピング
<class name="Foo" table="foo">
...
<set role="bars" table="foo_bar">
<key column="foo_id"/>
<many-to-many column="bar_id" class="Bar"/>
</set>
</class>
<class name="Bar" table="bar">
...
<set role="foos" table="foo_bar" readonly="true">
<key column="bar_id"/>
<many-to-many column="foo_id" class="Foo"/>
</set>
</class>
AはFooには、いくつかのbars
があり、バーはfoos
いくつかを持っています。 Bar.foosため は、私はちょうどこの簡単な方法が必要であることを推測し、読み取り専用を宣言されています
public class Foo {
public void addBar(Bar bar) {
this.bars.add(bar);
}
}
そしてない:
public class Foo {
public void addBar(Bar bar) {
this.bars.add(bar);
bar.foos.add(foo); // readonly
}
}
私の推測では、私はそのように一貫性を確保することができないということです(Foo
をBar
に追加する)。 HibernateはFoo.bars
を追加するたびに自動的にBar.foos
を更新するか、一度初期化されたBar.foos
コレクションの静的なものであることを保証しますか?
私はこれを行う場合:
Foo foo = new Foo();
Bar bar = new Bar();
bar.getFoos().size(); // expected to return 0
foo.addBar(bar);
bar.getFoos().size(); // expected to return 1
size()
の戻り値は、私が期待するものでしょうか?
私はそうポインタは非常に参考になる、まだ、関連するドキュメントを見つけることができませんでした。
を参照ドキュメントを見てみましょう。 http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtdでDTDファイルを開くと、セット内にrole属性やreadonly属性がないことがわかります。あなたのドキュメントはおそらく時代遅れです。参照ドキュメントを使用します。 –