Не могли бы вы просто сделать (глубокую) копию предыдущего объекта и использовать его в качестве следующего объекта, позволяя пользователям перезаписывать любые измененные поля? Таким образом, поля будут теми, которые пользователь в последний раз вводил, индивидуализировал для каждого пользователя и обновлял по мере изменения этих полей.
Если у вас есть способ запомнить последнее, что было введено для каждого пользователя, вы даже можете сохранить это между сеансами.
Комментарии ОП:
К сожалению, создание глубокой копии объекта портит контекст объекта, когда возникают отношения. Новый объект со связями должен либо создавать новые реляционные объекты, либо запрашивать существующие объекты из базы данных.
Так? Если это отношение к другому объекту (внешнему ключу в базе данных), это отношение «использование», и вы просто сохраняете его. Если это атрибут, скопируйте его.
Например, предположим, что ваша форма представляет собой ввод данных о сотрудниках и имеет раскрывающийся список для, я не знаю, employeeType, который либо «освобожден» (без сверхурочных), либо «не освобожден» (получает сверхурочно). Вы извлекли значения для employeeType из базы данных и хотите, чтобы следующий введенный сотрудник имел те же значения, что и последний введенный сотрудник, чтобы сохранить нажатие клавиш ввода людей. Таким образом, ваша глубокая копия просто свяжет скопированного сотрудника с той же базой данных employeeType.
Но для атрибутных данных (например, имени) вы бы сделали копию.