Как переписать таблицу, когда Hibernate говорит, что она заблокирована? - PullRequest
0 голосов
/ 02 сентября 2011

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

Есть ли какой-нибудь флаг или команда для сохранения в БД и игнорирования блокировки гибернации?

Будет ли альтернативой снова получать данные из БД, если она грязная, и после этого снова сохранять?Поскольку теперь у нас есть новая версия, и блокировка завершена, сохранение проблемы не составит труда.

псевдокод (не тестировался):

if (article.isDirty()) {
  article.get(params.id)
}
article.bindData(params)
article.save()

1 Ответ

0 голосов
/ 02 сентября 2011

Взгляните на метод refresh () для классов домена: http://www.grails.org/doc/latest/ref/Domain%20Classes/refresh.html

Обратите внимание, что есть предостережения, поэтому лучше всего взять последнюю версию объекта вашего домена и затем программно объединить данные: http://www.grails.org/doc/latest/guide/single.html#5.3.5%20Pessimistic%20and%20Optimistic%20Locking

...