Я пытаюсь отобразить заказ и его элементы в Hibernate.Элемент заказа не должен ссылаться на его родительский заказ:
public class Order {
private long id;
private Set<OrderIter> orderItems = new HashSet<OrderItem>();
public long id() {
return id;
}
public void add(OrderItem item) {
item.setItemNumber(orderItems.size() + 1);
orderItems.add(item);
}
public Set<OrderItem> orderItems() {
return Sets.newHashSet(orderItems);
}
}
public class OrderItem {
private int itemNumber;
public int itemNumber() {
return itemNumber;
}
public void setItemNumber(int itemNumber) {
this.itemNumber = itemNumber;
}
}
Цель состоит в том, чтобы Hibernate автоматически сохранял элемент заказа при добавлении в заказ, например:
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Order order = (Order) session.load(Order.class, orderId);
OrderItem item = new OrderItem();
order.add(item);
// Done
session.getTransaction().commit();
HibernateUtil.getSessionFactory().close();
Я посмотрел на Глава 24. Пример: Parent / Child , но в этом примере дочерний элемент имеет ссылку на родителя.Сейчас я пытаюсь отобразить его, используя Коллекции зависимых объектов :
<class name="Order" table="ORDERS">
<id name="id" column="ORDER_ID" access="field">
<generator class="native" />
</id>
<set name="orders" table="ORDER_ITEMS" access="field">
<key column="id" />
<composite-element class="OrderItem">
<property name="ItemNumber" access="field" />
</composite-element>
</set>
</class>
Это почти работает, но комбинация идентификатора заказа и номера элемента должна быть уникальной.Как я могу соответствовать всем этим критериям с отображением Hibernate?