最近在写项目用到了hibernate,在使用一对多级联操作的时候遇到了发现无法级联保存多的一方,首先介绍一下问题背景
错误原因:session域中取出的对象不是持久化对象
用户(User)与订单(Order)------一对多关系,一个用户可以拥有多个订单
一开始我把用户存在session域中,在后台我取出了User对象
User u = (User)request.getSession().getAttribute("user");
然后我就直接
u.getOrders().add(order);
这种做法是错误的,因为session域中取出的对象不是持久化对象
所以改正后我采用的方法是
User u = (User)request.getSession().getAttribute("user");
//注意:从session域中取出来的User对象是临时对象,必须转化成持久化对象才会级联保存order
User user = (User) session.get(User.class,u.getId());
user.getOrders().add(order);
这是我想到的方法,可能有更好的欢迎交流