Во-первых, вам необходимо различать рабочий процесс приложения и разрешение. Обычно разрешения фокусируются на предоставлении доступа к ресурсам различных типов (например, «члены группы x имеют права на чтение, но не запись на файл y»). Разрешения обычно управляются вне самого приложения.
Рабочий процесс, с другой стороны, говорит "показать пользователям типа x следующее представление вашего приложения и пользователям типа ya другое представление" - например, переполнение стека показывает пользователям с высокой репутацией другой набор инструментов , Это основано на разрешениях, но обычно оно «запекается» в приложении.
Я не знаю правильного ответа для вас, но я подумал бы об этом, прежде чем принять решение о какой-то конкретной структуре.
Чтобы ответить на ваш первый вопрос:
Можно ли достичь этого с помощью модальной информации выше или я должен
хранить технические и нетехнические вопросы в двух разных базах данных?
Нет, ваша модель данных неполная. Он не показывает, как вы моделируете пользователей - как ваше приложение знает, какой тип пользователя вошел в систему? Нет абсолютно никакой причины хранить разные типы вопросов в разных базах данных - редко используют разрешения уровня базы данных для обеспечения безопасности на уровне приложений.
Является ли Hibernate правильным выбором или я должен использовать Mybatis?
Выбор не имеет отношения к описываемой вами проблеме.