@ScRsa
Delphi/Oracle Изучаю JAVA

Как правильно сделать ReadOnly поле с условием?

Подскажите как правильно сделать ReadOnly поле. Смысл вот в чем:
Есть документ. У документа есть тип документа. При создании документа можно задать любой тип, но при последующем редактировании тип документа менять нельзя. Или продолжение - менять тип документа может только администратор.

UPD
Использую Spring, Spring Data (hibernate)
  • Вопрос задан
  • 140 просмотров
Пригласить эксперта
Ответы на вопрос 2
@protven
В стандартной библиотеке нет, может есть какие-то готовые решения в сторонних, но я не видел.

"Руками" сделать можно банально так.

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

Что касается того, что менять тип документа может только администратор. Ну введите какую-то систему ролей в своем приложении и делайте дополнительную проверку. Так как вы не написали используемый стек технологий, написать что-то конкретное не смогу.
Ответ написан
@sirs
Если Вы используете хибернейт, то попробуйте добавить на колонку в таблице (оно же поле в бине) свойство
property name="docType" insert="true" update="false"
link это для случая, когда Вы не хотите изменять после создания.
Если хотите, чтобы менять мог только администратор - нужно смотреть в сторону spring security
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы