0
我採取以下許多一對多映射例如從這個Hibernate Mapping Cheat Sheet:休眠只讀集合映射
<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>
一個富有幾個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://docs.jboss.org/hibernate/core/3.6/reference/en-US/html_single/。如果您在http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd打開DTD文件,您會發現集合中沒有角色也沒有隻讀屬性。您的文檔可能已過時。使用參考文檔。 –