Hibernate为什么不设置级联属性也能更新? 10

有两张表,结构如下:1.班级表grade(gid,gname,gdesc);里面一条数据,gid:110701,gname:计应一班,gdesc:计算机应用专业一班;映射... 有两张表,结构如下:
1.班级表grade(gid,gname,gdesc);里面一条数据 ,
gid:110701,gname:计应一班,gdesc:计算机应用专业一班;
映射文件的配置信息是这样的:
<set name="students" lazy="false" fetch="subselect">
<key column="GID"/>
<one-to-many class="com.pb.hibernate.po.Student"/>
</set>
2.学生表student(sid,sname,gid);其中gid是外键,引用grade表,
里面一条数据:sid:11070101,sname:张华,gid:110701
现在用下面这段代码添加一个班级并将学生张华的班级改为新建的班级:
SessionFactory factory=new Configuration().configure().buildSessionFactory();
Session session=factory.openSession();
Transaction tr=session.beginTransaction();
Grade g=new Grade();
g.setGid(110704);
g.setGname("计应四班");
g.setGdesc("计算机应用专业四班");
Student s=(Student) session.load(Student.class, 11070101);
g.getStudents().add(s);
session.save(g);
tr.commit();
session.close();
不明白的是为什么我的持久化类Grade的映射文件中的<set>标签中并没有指定级连属性cascade,
这段代码也实现了学生班级信息的更新了呢(学生的gid改成了110704)?
展开
 我来答
lbbheart
2012-07-23 · 超过18用户采纳过TA的回答
知道答主
回答量:48
采纳率:0%
帮助的人:14.9万
展开全部
可能是load的原因,我记得get和load的区别是load是懒加载,一般获得的都是代理对象。一对多关系一般都是多方维护。针对一方表操作,正常情况不会改变多方的,如果知道是什么其他原因导致的,请解释一下。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-07-23
展开全部
lazy="true" 试试
追问
不行的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
绿茶_白开水
2012-07-24 · TA获得超过107个赞
知道答主
回答量:13
采纳率:100%
帮助的人:21.6万
展开全部
应该是默认的inverse=false起了作用,给set 增加 inverse=true属性试一下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式