JPA Пусто Не обновлять аннотацию - PullRequest
0 голосов
/ 06 февраля 2012

У меня есть объект сущности, называемый Пользователь, который представляет пользователя приложения с типичной пользовательской информацией, включая пароль.Я предоставил опцию редактирования для каждой пользовательской информации, тем самым пользователь может редактировать и обновлять свою информацию.Одним из полей редактирования является пароль, но я оставляю его пустым, чтобы только новый пользователь мог ввести свой новый пароль и не мог видеть свой текущий пароль.Я хочу предоставить пользователю возможность не вводить свой пароль, если он не хочет его менять.К сожалению, Hibernate обновляет пользовательский объект с пустой строкой в ​​качестве своего пароля, когда он сохраняет поле пароля пустым.Я ищу аннотацию JPA, тем самым я говорю Hibernate не обновлять поле пароля, когда оно пустое или пустое.

Кто-нибудь знает возможный способ?

Лучший

Ответы [ 2 ]

1 голос
/ 06 февраля 2012

Вы не хотите отображать пароль пользователя на странице. Хорошо. Но решение не в том, чтобы удалить пароль из объекта User! Это не имеет никакого смысла с точки зрения модели предметной области; это выдвигает требование пользовательского интерфейса слишком далеко назад

Вместо этого вы должны разрешить загрузку пароля в обычном режиме, а не отображать его на странице. Затем вам потребуется написать небольшую пользовательскую логику между страницей и объектом User, который обрабатывает обновления пароля.

0 голосов
/ 06 февраля 2012
  • Определите приемник сущностей для вашего класса для реализации событий обратного вызова с помощью @EntityListeners, затем вы можете проверить наличие пустой / пустой строки и т. Д. В методе @PreUpdate.

  • Реализация Cloneable интерфейса и пользователь обновляет клонированный объект, затем при необходимости может применить только требуемые изменения к исходному объекту и сохранить его. Таким образом, предыдущие поля (пароль) останутся без изменений.

  • Может иметь временное поле с @Transient для пароля, поскольку оно не восстановлено или не сохранено в базе данных, может использоваться для редактирования страницы. Если оно изменилось, скопируйте его в постоянное поле, иначе оно не повлияет на базу данных как ее переходный процесс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...