3.2.1.4.1. Использование
Для того чтобы экземпляры сущности удалялись мягко, класс сущности должен реализовывать интерфейс SoftDelete
, а соответствующая таблица БД должна содержать колонки:
-
DELETE_TS
- когда удалена запись -
DELETED_BY
- логин пользователя, который удалил запись
Поведение системы по умолчанию - сущности, реализующие SoftDelete
, удаляются мягко, удаленные сущности не возвращаются запросами и поиском по идентификатору. При необходимости такое поведение можно динамически отключить следующими способами:
-
для текущего экземпляра EntityManager - вызовом
setSoftDeletion(false)
-
при запросе данных через DataManager - вызовом у передаваемого объекта
LoadContext
методаsetSoftDeletion(false)
-
на уровне загрузчиков данных - используя метод
DataLoader.setSoftDeletion(false)
или атрибутsoftDeletion="false"
элементаloader
в XML-дескрипторе экрана.
В режиме мягкого удаления платформа автоматически отфильтровывает удаленные экземпляры при загрузке по идентификатору и по JPQL-запросу, а также удаленные элементы связанных сущностей в атрибутах-коллекциях. Однако связанные сущности в единичных (*ToOne) атрибутах загружаются независимо от того, удален связанный экземпляр или нет.