hibernate @ManyToOne не может быть вставлен правильно, потому что идентификатор FK еще не создан - PullRequest
2 голосов
/ 16 апреля 2011

В классе Order у меня есть недвижимость:

<pre>@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "order") private <code>Set<OrderLine> линии заказа;

В классе OrderLine у ​​меня есть свойство:

@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL) @JoinColumn(name="OrderID") private Order order;

В БД у строки заказа просто есть FK, указывающий на заказ. И в этом заключается проблема

Я вручную создаю объект Order без идентификатора, потому что он настроен на автоматическую генерацию, которую я сохраняю, используя соответствующий DAO. Таблица заказов заполнена правильно, а таблица строк заказа - нет.

Поле FK заказа в таблице строки заказа остается пустым. Я предполагаю, что это потому, что в точке вставки идентификатор заказа по-прежнему не имеет идентификатора.

Есть ли простой способ исправить это?

1 Ответ

3 голосов
/ 16 апреля 2011

Как вы сохраняете свои экземпляры строки заказа?

Вам нужно будет установить экземпляр объекта заказа в экземпляре строки заказа.

Например:

Order order = new Order();
// populate order



Set<OrderLine> orderLines = new HashSet<OrderLine>();

OrderLine orderline = new OrderLine();
orderline.setOrder(order); // set the order instance
// populate orderline

orderLines.add(orderline);

order.setOrderLines(orderLines);

order.persist();
...