В стандартной библиотеке нет, может есть какие-то готовые решения в сторонних, но я не видел.
"Руками" сделать можно банально так.
В сеттере для поля "Тип класса" делаете проверку, если оно null, то заменяете. Если нет (то есть уже было задано ранее) , то кидаете exception/возвращаете ошибку/еще как-то там обрабатываете.
Если подразумевается что в эту секцию кода могут зайти из разных потоков, то надо позаботиться о потенциальных race condition. Например банально сделать сеттер synhronized.
Что касается того, что менять тип документа может только администратор. Ну введите какую-то систему ролей в своем приложении и делайте дополнительную проверку. Так как вы не написали используемый стек технологий, написать что-то конкретное не смогу.