hibernate删除的问题

gimm667 2011-01-29 11:22:12
比如系统中的一个学员,加入到了培训班中,在删除这个学员的时候,通常情况下,要不要同时删除学员在班级中的对应关系,
我现在的处理方法是:在删除学员的时候,提示了一下,"此学员已加入到培训班中,请先删除培训班中的学员"
不知道这样做是不是合理


系统使用了hibernate,学员和班级是多对多的关系,且让培训班作为主控方

请大家指教,谢谢!
...全文
175 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
cao_0305 2011-02-14
  • 打赏
  • 举报
回复
还是用事物 不要用级联 那很危险
JavPer 2011-02-14
  • 打赏
  • 举报
回复
具体怎么删要根据具体的需求!
qkniit 2011-02-09
  • 打赏
  • 举报
回复
[Quote=引用楼主 gimm667 的回复:]

系统使用了hibernate,学员和班级是多对多的关系,且让培训班作为主控方

[/Quote]
学员和班级应该是多对一的关系,
学员和培训班应该是多对多的关系,
forestandriver23 2011-02-09
  • 打赏
  • 举报
回复
很简单,看业务需要
zq0909 2011-02-08
  • 打赏
  • 举报
回复
如果不需要有记录的话,直接配置hibernate的级联关系,使用级联删除。
如果数据重要,就加入一个状态值,用来表示存在,删除
fendou5016 2011-01-31
  • 打赏
  • 举报
回复
先删掉班级表中 对应学员的信息 然后再删除学员表中的 学员信息 这样的效率要好一点
xinlan1022 2011-01-31
  • 打赏
  • 举报
回复
这个好像跟业务有关
yuyang06 2011-01-30
  • 打赏
  • 举报
回复
如果只删除学员会报错吧?

先删除培训再删除学员,把他们放在一个事务里面处理比较好
heardy 2011-01-30
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 gimm667 的回复:]
我觉得给提示信息容易做得更加产品化,但现在问题是需要批量删除,
如果有多个学员加入到培训班中了,我想最好能作出以下提示信息"学员张三,李四,王五已加入到网络第三期培训班中,请先删除培训班中的对应学员"

但是学员名称在异常信息中找不到(加入培训班的学员不能在外部任意删除,我是通过外键约束来进行限制的),异常中只能找到下列消息:SQL Error: 1451, SQLState: 23000
……
[/Quote]

你可以加个字符串 遍历删除 删除时 不是会抛出错误吗? 你就获取这个学院的名称 存入字符串 展示的时候在进行输出
heardy 2011-01-29
  • 打赏
  • 举报
回复
提示的时候可以在询问下 是否确定删除 删除则删除学员所有信息

接着 删除的时候就是 先删除培训班里面的信息 在删除此学员
zn85600301 2011-01-29
  • 打赏
  • 举报
回复
先删培训班信息 再删学员信息
放在一个事物里处理就可以了
gimm667 2011-01-29
  • 打赏
  • 举报
回复
jiaqiangm兄,有什么危险呢?
黄小楼 2011-01-29
  • 打赏
  • 举报
回复
不要以为级联删除很牛X。。。那是很危险的事情
gimm667 2011-01-29
  • 打赏
  • 举报
回复
我觉得给提示信息容易做得更加产品化,但现在问题是需要批量删除,
如果有多个学员加入到培训班中了,我想最好能作出以下提示信息"学员张三,李四,王五已加入到网络第三期培训班中,请先删除培训班中的对应学员"

但是学员名称在异常信息中找不到(加入培训班的学员不能在外部任意删除,我是通过外键约束来进行限制的),异常中只能找到下列消息:SQL Error: 1451, SQLState: 23000
Cannot delete or update a parent row: a foreign key constraint fails (`cms/t_class_student`, CONSTRAINT `t_class_student_ibfk_1` FOREIGN KEY (`fk_student_id`) REFERENCES `t_student` (`ID`))
Could not synchronize database state with session

我又不想通过查询整个表去得到学员姓名,我觉得太浪费性能,请教下大家有没有好的办法,谢谢哇。。
numb09 2011-01-29
  • 打赏
  • 举报
回复
不重要的场合下级联删除得了,重要的场合还是避免物理删除,加个字段做删除标识
重名率太高 2011-01-29
  • 打赏
  • 举报
回复
如果项目比较复杂的话,建议不删除,可以给学员一个标识值,正常情况下是一个值,非正常情况(如要删除)可以将这个值改变一下。如果直接删除的话可能会造成一些后期维护的麻烦---------------个人看法
achui1980 2011-01-29
  • 打赏
  • 举报
回复
如果信息关联性不是很强的话,可以使用级联删除,直接删除掉了,像你这样的提示,其实也是可以的

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧