songlixiao 2011-06-14 17:52
浏览 423
已采纳

大家讨论下如何使用Hibernate实现逻辑删除吧

如果项目里有大量的数据想使用逻辑删除,就是假删除,我们会在数据库的表里放一个ds字段来区分是否删除。
设想删除数据时,我们统一用的dao的delete方法来删除,而delete方法中则使用setDs(true)来做逻辑删除。
但是,这样一来两个问题出现了:
1. 逻辑删除一个实体时,需要级联删除的子表对象如何才能自动一起逻辑删除掉。
2. 当子表的几行被逻辑删除掉了,用主表对象类似myeo.getxxxlist()的方法,获取子表对象的list时,Hibernate仍会将逻辑删除掉的对象查询并加载到list中。

这两个问题个人感觉很有难度。请问有没有人有实现的思路呢?
问题补充

hekuilove 写道
我也遇到过类似的问题
我在表里弄了一个delete_flag字段1为未删除 0为删除
但是使用hibernate过后就发现remove了 啥都木有了。
才想起delete_flag木有用了

是啊,要想用逻辑删除就不能调hibernate的remove了。需要在自己的dao里封装delete方法,然后设置数据为删除。
要不然一remove就真的删掉了,数据就木有了。
  • 写回答

7条回答 默认 最新

  • humaeks 2011-06-17 09:14
    关注

    再补充。。为什么虽然触发器这么麻烦,还是要用触发器,是因为只有他能从运维人员意外的delete sql中挽救你。。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(6条)

报告相同问题?

悬赏问题

  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算