3.2.1.4.1. 软删除的使用
要支持软删除,实体类应该实现 SoftDelete
接口,相应的数据库表应该包含以下列:
-
DELETE_TS
– 删除记录的时间。 -
DELETED_BY
– 删除记录的用户登录名。
实现 SoftDelete
接口的实例的默认行为是,查询或按 id 搜索不返回软删除的实体。如果需要,可以使用以下方法动态关闭此特性:
-
当前EntityManager实例调用
setSoftDeletion(false)
。 -
通过DataManager请求数据时,
LoadContext
对象调用setSoftDeletion(false)
方法。 -
在数据加载器级别 - 调用
DataLoader.setSoftDeletion(false)
方法或在界面的 XML 描述中设置loader
元素的softDeletion="false"
属性。
在软删除模式下,平台在按标识符加载实例时、使用JPQL 查询加载实例时以及在实体的集合属性中都会自动过滤掉被删除的实例。但是,在单一值(*ToOne)关联实体的时候却会加载相关联的实体,不管这个关联的实体是否已经被删除。