Я хотел бы создать очень классические двунаправленные родительско-дочерние отношения между двумя сущностями.Код:
public class History {
public Long id;
public List<HistoryField> fields;
}
public class HistoryField {
public History history;
public String foo, bar;
}
HistoryField
принадлежит его History
родителю.
Для моделирования этого я использую следующее отображение hibernate:
<class name="History" table="history">
<id name="id" type="long" />
<list name="fields" cascade="all" table="fields">
<key column="history_id" />
<list-index column="order_index" />
<composite-element class="HistoryField">
<property name="foo" />
<property name="bar" />
</composite-element>
</list>
</class>
Но как мне указать в отображении ссылки между HistoryField::history
обратно на сущность-владельца History
?
Хитрость в том, что коллекция принадлежит и определяется каксоставной элемент (для HistoryField
нет идентификатора, первичным ключом является пара history_id
+ order_index
).Классические примеры двунаправленных родительско-дочерних отношений здесь не применимы;поскольку они объясняют связь между двумя классами с идентификаторами, тогда как здесь у принадлежащего класса нет ни одного.