我有一个表单更改了我的对象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/";
}
可以解决问题。但这是解决问题的好方法吗?
答案 0 :(得分:2)
一种方法是不从表单提交CUSTOMER对象。
而是提交客户,仅提交客户ID和新名称。在控制器中,您必须通过提交的ID加载Customer,然后更新名称。并再次坚持客户。
答案 1 :(得分:1)
HI,
使订单方面的多对一关系的cascade =“none”属性
感谢。