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(); 展开
现在我要删除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(); 展开
2个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询