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