hibernate 一对多关系删除的问题(*急)

来源:百度知道 编辑:UC知道 时间:2024/05/30 08:22:38
我在用hibernate配置的两个表属於一对多关系,假设A表为一端,B表为多端.我在B表的属性函数里面包含了A类的对象,当我删除B表中的一条纪录时候,在Action函数里面已经得到B中一条纪录的List,在List中包含B中这条纪录的所有属性,但是它的外键也就是与A相关联的字段是以A表中相对应的那条纪录存在的.所以在把这个List转换成B类对象是不能成功.响应的也不能删除.希望高手指点一下.先谢谢了.可能问题描述不是很清楚.如果有疑问再仔细说.恳请高手指点.
是这样,B表中不是包含A的主键吗?我在对应B表属性的类中设置了一对多的关系,在这个类中包含的是A的对象,而不是A表中的主键,所以查询到B中的一条纪录时这个List中并不是简单的包含了A中的那个字段而是包含A中的那条纪录,所以在把 List转换成B类对象是不能成功.我现在就是想删除这条纪录.请问高手我应该怎麼做.顺便说下,对於不是属於多端的表我删除成功

在配置文件里加上这样一个cascade="all"知道加哪里吧?举例给你看下<one-to-one
name="clerk"
class="clerk"
cascade="all"//这个地方
outer-join="auto"
constrained="false"
property-ref="clerkcert"/>
再给你解释下吧。。好难打字。。。。
none:不进行删除。
save-update:级联保存更新
all:级联所有操作。
all-delete-orphan: 删除所有关联的子对象。
如果你需要反向关联(假设证件表删除/更新影响到用户表),则将inverse属性设为true即可。
希望可以对你有所帮助。 。。。。打完睡觉。。。。
对了。。还要吧你数据库打开在在你弄的的外键那里的选项删除时候和更新时候,选择成cascade

前一个如楼上所说,后面一个在配置的时候有个属性lazy的,为false是可以级联操作的.不过hibernate最好不要用一对多,一般一对多都用多对一代替.

list当然不能转换成b了,应该用迭代itaretor(好像是这样写的吧),b=list.tiaretor.next();

你是不是想:把对应的a表中的数据也删除啊,这个简单啊,从得到的b中拿到a表的主键,然后按照主键查找a表的那条记录(findby**()方法),然后删除就可以了