Значения версии Hibernate в приложении Grails - PullRequest
0 голосов
/ 25 апреля 2010

Я просматриваю файл дампа базы данных и вижу много записей в различных таблицах, у которых номер версии установлен в значения, отличные от 0 (даже 94 в одном случае) Я понимаю, что это связано со стратегией блокировки гибернации, но меня беспокоит то, что сегодня воскресенье, и на сайте почти нет посетителей, так что это нормально? Или есть известная ошибка гибернации или даже какая-то программная халатность, производящая это?

Кстати, безопасно ли / рекомендуется восстанавливать эти значения вручную до нуля при восстановлении резервной копии базы данных?

Ответы [ 2 ]

2 голосов
/ 25 апреля 2010

Поле версии Hibernate на самом деле просто подсчитывает, сколько раз эта запись была сохранена (ну, минус 1, поскольку при первом сохранении значение равно 0). Обратите внимание, что это число на самом деле не используется в качестве счетчика сохранения, поэтому фактическое значение в любое время не имеет значения.

Он используется для определения того, была ли строка сохранена в промежутке между прочтением строки и когда вы пытаетесь сохранить строку. Если вы прочитали строку и значение версии равно 12, то позже вы изменили объект и попытались его сохранить. Первое, что делает Hibernate, это проверяет, является ли значение в БД для версии в этой строке все еще 12. Если нет, то какой-то другой процесс сохранил эту строку, так как вы ее прочитали, и если вы сохраните сейчас, вы можете перезаписать некоторые изменения, сделанные во время предыдущего сохранения.

Чтобы ответить на ваш вопрос ... Пока ничто не находится "в середине" потенциального процесса чтения / хранения (например, сайт не работает или что-то подобное), тогда вы можете изменить поле версии на любое число, которое вы лайк. Оттуда он будет увеличиваться при каждом сохранении этой строки.

1 голос
/ 26 апреля 2010

Кроме того, если вам это не нужно, вы можете отключить его с помощью

статическое отображение { версия ложная }

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