Spring-Hibernate: Как отправить объект, когда объект имеет отношения один ко многим? - PullRequest
0 голосов
/ 12 января 2011

У меня есть форма, изменившая свойства моего объекта CUSTOMER.Каждый клиент имеет связанные ЗАКАЗЫ.В таблице ORDER есть столбец customer_id, который используется для сопоставления.Пока все работает, я могу читать клиентов без проблем.

Когда я сейчас, например, изменяю имя ЗАКАЗЧИКА в форме (которая НЕ показывает заказы), после сохранения имя обновляется, но всеотношения в таблице ORDERS установлены в NULL (customer_id для элементов установлен в NULL.

Как мне сохранить рабочие отношения?

THX


ОБНОВЛЕНИЕ: Информация о сопоставлении

Заказы отображаются на стороне клиента

@OneToMany
@JoinColumn(name = "customer_id")
@OrderBy("orderDate")
private Collection<Order> orders = new LinkedList<Order>();

ОБНОВЛЕНИЕ Похоже на добавление

@SessionAttributes("customer")

к моей модели, изменениеспособ

public String saveTrip(@ModelAttribute("customer") Customer customer, BindingResult result, SessionStatus status) {

    if (!result.hasErrors()) {          
        this.tripManager.saveTrip(trip);
    }
    else {
        logger.debug("Form data included errors, did not save data");
        BindingUtils.logBindingErrors(result, logger);
    }

    status.setComplete();

    return "redirect:/customers/";
}

Может решить проблему. Но разве это хороший способ ее решения ???

Ответы [ 2 ]

2 голосов
/ 12 января 2011

Один из способов - не отправлять объект CUSTOMER из формы.

Вместо этого отправьте клиента, отправьте только идентификатор клиента и новое имя. В контроллере вы должны загрузить клиента по представленному идентификатору, а затем обновить имя. И снова упорствовать Заказчику.

1 голос
/ 12 января 2011

HI,
Make cascade = "none" атрибут отношения многие-к-одному со стороны заказа.
Спасибо.

...