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

大家讨论下如何使用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条)

报告相同问题?

悬赏问题

  • ¥30 STM32 INMP441无法读取数据
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境