У меня есть TenantFilter, который устанавливает TenantContexts currentTennat в одно из следующих значений:
- ALL (тенант по умолчанию, который я устанавливаю, когда пользователь имеет роль суперадминистратора)
- XYZ (XYZ представляет значение заголовка, который я передаю), если пользователь является администратором/обычным пользователем
- Субъект пользователя, поле которого помечено @TenantId (tenantCode).
- Сущность статьи, которую я пытаюсь создать, также помечена @TenantId (tenantCode) и дополнительно имеет поле User createBy (поле аудита, разрешенное из AuditorAware – getCurrentAuditor)
Если, с другой стороны, я отправляю TENANT_CODE желаемого арендатора с этим запросом на создание статьи, исходящим от суперадминистратора, тогда пользователь суперадминистратора не может быть найден в БД, а поле CreateBy (то есть NotNull) является нулевым объектом, который невозможно сохранить.
Мой вопрос: могу ли я, если мой пользователь является суперадминистратором, иметь DEFAULT_TENANT_CODE для операций чтения и конкретный TENANT_CODE для операций записи (создания/обновления/удаления).
Все предложения и последующие вопросы приветствуются!
P.S. Я использую общую базу данных и общую схему (так что для меня tenant_code является столбцом дискриминатора)
Я просмотрел определения CurrentTenantIdentifierResolver и AvailableSettings, используемые для HibernatePropertiesCustomizer.
Подробнее здесь: https://stackoverflow.com/questions/779 ... ltitenancy
Мобильная версия