如果项目里有大量的数据想使用逻辑删除,就是假删除,我们会在数据库的表里放一个ds字段来区分是否删除。
设想删除数据时,我们统一用的dao的delete方法来删除,而delete方法中则使用setDs(true)来做逻辑删除。
但是,这样一来两个问题出现了:
1. 逻辑删除一个实体时,需要级联删除的子表对象如何才能自动一起逻辑删除掉。
2. 当子表的几行被逻辑删除掉了,用主表对象类似myeo.getxxxlist()的方法,获取子表对象的list时,Hibernate仍会将逻辑删除掉的对象查询并加载到list中。
这两个问题个人感觉很有难度。请问有没有人有实现的思路呢?
问题补充
hekuilove 写道
我也遇到过类似的问题
我在表里弄了一个delete_flag字段1为未删除 0为删除
但是使用hibernate过后就发现remove了 啥都木有了。
才想起delete_flag木有用了
我在表里弄了一个delete_flag字段1为未删除 0为删除
但是使用hibernate过后就发现remove了 啥都木有了。
才想起delete_flag木有用了
是啊,要想用逻辑删除就不能调hibernate的remove了。需要在自己的dao里封装delete方法,然后设置数据为删除。
要不然一remove就真的删掉了,数据就木有了。