![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
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)? 展开
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)? 展开
展开全部
可能是load的原因,我记得get和load的区别是load是懒加载,一般获得的都是代理对象。一对多关系一般都是多方维护。针对一方表操作,正常情况不会改变多方的,如果知道是什么其他原因导致的,请解释一下。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2012-07-23
展开全部
lazy="true" 试试
追问
不行的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
应该是默认的inverse=false起了作用,给set 增加 inverse=true属性试一下
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询