Колонка версии Grails - PullRequest
       1

Колонка версии Grails

1 голос
/ 21 июня 2011

У меня есть приложение Grails, которое я мигрирую с 1.0.3 до 1.3.7

Насколько я понимаю, таблицы, использующие номера версий, будут начинаться с нуля и автоматически увеличиваться при обновлении строки. Все имеющиеся у меня устаревшие данные показывают, что ячейки версий для каждой строки равны нулю, но введенные новые строки имеют номер версии 0.

Разве версия 1.0.3 Grails не поддерживала эту концепцию? Должен ли я обновить все эти строки для всех соответствующих таблиц для пользователя 0 вместо нуля? Каковы последствия? Спасибо.

1 Ответ

6 голосов
/ 21 июня 2011

Grails всегда поддерживал колонку версий для реализации оптимистической блокировки Hibernate.При обновлении экземпляра Hibernate генерирует SQL, который сравнивает текущую и предыдущую версию, и выдает исключение, если они различаются.Поскольку SQL null никогда не может сравниться с чем-либо, любая попытка обновить эти строки вызовет исключение.

Исправление очень простое - просто запустите запрос, чтобы установить нулевые значения в 0, что-то вроде update table_name set version=0 where version is null.

Как только вы это сделаете, вы должны изменить эти столбцы, чтобы они не были нулевыми, чтобы избежать нулевых значений в будущем.

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