最近在写项目用到了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);这是我想到的方法,可能有更好的欢迎交流
本文介绍了在使用Hibernate框架实现一对多级联保存时遇到的问题及解决方法。具体问题是在session域中取出的对象不是持久化对象导致无法级联保存多的一方。文章提供了正确的解决方案,并附带了代码示例。

743

被折叠的 条评论
为什么被折叠?



