问题描述
假如我在数据库有class和student两个表,他们是一对多的关系,设置了外键,映射等该设置的都OK了。我现在创了两个student实例S1 S2里面都有数据,然后添加到class的实例C1里面,最后,我调用classDAO的保存C1,提交。最后我打开后台数据库查看,class表里面确实保存信息了,但是student表里面还是空的。我想问下是不是保存C1的时候,还要再写一句话保存S1和S2,这样两个表里面才都有数据。如果是这样的话,为什么我看到的很多书上的例子,都是只保存了C1,然后S1和S2貌似也都自动保存了。请教下hibernate会自动保存一对多的这种实例吗?
解决方案
简单的例子就是部门与员工的一对多关系在部门映射文件中设置:<set name="emps" cascade="save-update" inverse="true"><!-- cascade为级联设置,inverse为是否放弃维护关联 --> <key column="dep_id"/> <one-to-many class="cn.itcast.bean.Employee"/> </set>这样设置表示当你保存或更新部门信息时会自动保存或更新相关的员工信息
解决方案二:
首先很肯定的是会,其次要理解是面向对象的操作。如果在保存一得方时,把多的也保存了,首先必须配置关系,在class里配置级联属性,配置cascade值为save-update,然后在实例student时,也需要把class的实例set进student的实例里,然后做save class实例试试
解决方案三:
你在class的映射文件中设置级联保存就可以了,当你保存class时,就会自动保存相关联的Student数据
时间: 2024-11-01 06:29:11