3.2.1.4.1. 软删除的使用

要支持软删除,实体类应该实现 SoftDelete 接口,相应的数据库表应该包含以下列:

  • DELETE_TS – 删除记录的时间。

  • DELETED_BY – 删除记录的用户登录名。

实现 SoftDelete 接口的实例的默认行为是,查询或按 id 搜索不返回软删除的实体。如果需要,可以使用以下方法动态关闭此特性:

  • 当前 EntityManager 实例调用 setSoftDeletion(false)

  • 通过 DataManager 请求数据时,LoadContext 对象调用 setSoftDeletion(false) 方法。

  • 数据源级别 - 在界面的 XML 描述中调用 CollectionDatasource.setSoftDeletion(false) 方法或设置 collectionDatasource 元素的 softDeletion="false" 属性。

在软删除模式下,平台在按标识符加载实例时、使用 JPQL 查询加载实例时以及在实体的集合属性中都会自动过滤掉被删除的实例。但是,在单一值(*ToOne)关联实体的时候却会加载相关联的实体,不管这个关联的实体是否已经被删除。