Я беру следующий пример сопоставления "многие ко многим" из этого Шпаргала по отображению 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>
У 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 такую согласованность, автоматически обновляя Bar.foos
всякий раз, когда я добавляю Foo.bars
, или статическая коллекция 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()
ожидаемыми?
Я не смог найти соответствующую документацию, поэтому указатель был бы очень полезен.