Spring-Hibernate:如何在对象具有一对多关系时提交for?

时间:2011-01-12 10:36:43

标签: spring forms entity-relationship one-to-many

我有一个表单更改了我的对象CUSTOMER的属性。每个客户都有相关的ORDERS。 ORDER的表有一个customer_id列,用于映射。所有工作到目前为止,我可以毫无问题地阅读客户。

当我现在在保存名称更新后,更改表单中的CUSTOMER的名称(不显示订单),但ORDERS表中的所有关系都设置为NULL(项目的customer_id设置为NULL。

如何保持关系有效?

THX


更新:映射信息

订单映射在客户端

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

UPDATE 似乎像添加

@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 个答案:

答案 0 :(得分:2)

一种方法是不从表单提交CUSTOMER对象。

而是提交客户,仅提交客户ID和新名称。在控制器中,您必须通过提交的ID加载Customer,然后更新名称。并再次坚持客户。

答案 1 :(得分:1)

HI,
使订单方面的多对一关系的cascade =“none”属性 感谢。