@Override public void remove(Entity entity) { log.debug("remove {}", entity); if (PersistenceHelper.isDetached(entity)) { entity = internalMerge(entity); } if (entity instanceof SoftDelete && softDeletion) { ((SoftDelete) entity).setDeleteTs(timeSource.currentTimestamp()); ((SoftDelete) entity).setDeletedBy(auditInfoProvider.getCurrentUserLogin()); } else { delegate.remove(entity); if (entity instanceof BaseGenericIdEntity) { BaseEntityInternalAccess.setRemoved((BaseGenericIdEntity) entity, true); } } }