Мы используем спящий режим с оптимистичной блокировкой. Все наши сущности имеют аннотацию @version.стратегия оптимального обновления на спящем режиме stalestateException
Это прекрасно работает, если пользователь пытается сохранить объект, который является устаревшим, мы получаем сталеустанавливающее исключение. В нашем случае мы хотели бы предоставить пользователю экран уведомлений, чтобы отменить его изменения или перезаписать текущие значения в базе данных.
Это обычный прецедент для исключений устаревших состояний. Мой вопрос связан с этим прецедентом. Какова наилучшая стратегия, если пользователь решает переписать текущую строку базы данных своими изменениями? Я перешел к справочному руководству по спячке и другим веб-сайтам, но все, что упоминается, заключается в том, что вам нужно самому поймать себя как старое, а затем программно обрабатывать перезаписи данных. Мне интересно, есть ли у hibernate некоторые утилиты, чтобы упростить эту стратегию, простейшая вещь, которую я могу получить, если пользователь решает переписать свои данные, извлекает последнюю версию объекта из базы данных, а затем копирует все измененные поля на этот объект а затем сохранить измененный объект обратно в базу данных. Но я не могу перестать задаваться вопросом, нет ли более элегантного решения.
В некоторых случаях мы действительно создаем 'merge ui'. Но есть некоторые варианты использования, в которых данные несущественны, чтобы просто перезаписываться, мне было интересно, есть ли какой-то метод по умолчанию для этого или вам просто нужно написать алгоритм самостоятельно. –
Не то чтобы я знаю, что боюсь. –
Это хороший вопрос. Я потратил немало времени на размышления о том, как лучше всего справиться с этой ситуацией! –