Мне также интересно узнать, как это сделать.Вот мотивирующий случай.Допустим, у меня есть объект User для представления пользователя в моем приложении.Объект User имеет несколько свойств, таких как имя пользователя, пароль, адрес электронной почты, имя и т. Д., Которые я буду хранить в базе данных.
Когда я создаю экран, который позволяет пользователю редактировать свой собственный профиль,Я хочу установить флажок «Изменить пароль», чтобы я мог показать / скрыть поле пароля, а также поле «Подтвердить пароль», чтобы они не вводили его неправильно.Я не хочу хранить эти свойства в базе данных, и они на самом деле не являются частью объекта User, поэтому я не хочу, чтобы эти поля существовали в User.Тем не менее, многие веб-фреймворки значительно упрощают создание страницы формы на основе редактируемого объекта.
Чтобы решить эту проблему, нужно создать подкласс User, давайте назовем егоEditableUser, который имеет несколько дополнительных полей, таких как «changePassword» и «verifyPassword», и использует этот объект в моей форме.Но проблема в том, что Hibernate не будет знать, как сохранить объект EditableUser.(Это также проблема того, как создать EditableUser из пользователя, которого вы загружаете из базы данных, но это выполнимо, если у вас есть конструктор копирования)
Я решил обойти эту проблему так:используйте делегирование: создайте объект EditableUser, в котором есть пользователь, а также дополнительные свойства, которые я не хочу сохранять.Это работает достаточно хорошо, за исключением того, что это означает, что все мои привязки данных в форме должны измениться, чтобы получить доступ к внутреннему объекту User, поэтому это выглядит немного грязно.