hibernate主外键删除问题...

我有一个A表主键(学生),B表外键(成绩).现在我要删除A表的一条信息,然后在把B表的外键信息也删除掉..我把实体配置文件<setname="achievements"i... 我有一个A表主键(学生),B表外键(成绩).
现在我要删除A表的一条信息,然后在把B表的外键信息也删除掉..我把 实体配置文件<set name="achievements" inverse="true" cascade="all">cascade改成了all,在main测试能成功删除A和B表的信息..
删除方法:
Student stu=new Student();
session.load(stu,id);
session.delete(stu);
ran.commit();
session.flush();

但是在action里面调用这个方法就要报错:org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session:

请问有什么方法解决没有? 在线等题
终于解决了... 遍历然后调用.clear()方法...主要是一个对象存在2个不同的实体当中,。。

Student stu=(Student)session.get(Student.class,id);
Set<?> set=stu.getAchievements();
Iterator<?> it=set.iterator();
while(it.hasNext())
{
session.clear();
Achievement ach=(Achievement)it.next();
session.load(ach,ach.getScoreid());
session.delete(ach);
session.clear();
}
session.delete(stu);
ran.commit();
session.flush();
展开
 我来答
一个正直的吧友
2009-08-04 · TA获得超过3143个赞
知道小有建树答主
回答量:941
采纳率:0%
帮助的人:1085万
展开全部
改成这样
Student stu=new Student();
stu.setId(id);
session.delete(stu);
ran.commit();
session.flush();
北京欢迎你老大
2009-08-04 · TA获得超过1037个赞
知道小有建树答主
回答量:776
采纳率:0%
帮助的人:681万
展开全部
session.load(stu,id);???
你覆盖了session的load方法啊?
我怎么记得session的load方法是这么用的:
假设你要加载id是1的对象啊~!
session.load(Student.class,new Integer(1))
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式