как nhibernate обрабатывает конфликты обновления за кулисами со столбцом ver? - PullRequest
2 голосов
/ 13 сентября 2011

Я просто ищу документацию о том, как hibernate обрабатывает коллизии, используя столбец ver.

понимание на данный момент: изменение строки означает, что измененная строка вставляется с новым номером версии

- Это делается с помощью «select max (ver) +1»?-

впоследствии предыдущая версия удаляется.

кстати: откуда мы знаем, что {"select max (ver) +1";insert} гарантированно будет атомарной операцией?Они сначала блокируют строку?

Заранее спасибо за любую информацию.Я просто пытаюсь получить полное понимание.

Ответы [ 2 ]

2 голосов
/ 13 сентября 2011

Я расширю немного больше здесь. То, что hibernate выполняет для обновления, похоже на

UPDATE table SET string = 'string', number = 1, version = version+1 
WHERE id = %Id% AND version = %Version%

Это означает, что обновление будет успешным, только если версия все та же, что и при загрузке объекта / строки из базы данных, и обновление номера версии в том же запросе.

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