Я получил такой код:
def myObject = MyDomainClass.get(myId)
myObject.refresh()
myObject.myProperty = myValue
myObject.save(flush:true, failOnError:true)
Несмотря на получение и обновление, я иногда получаю "org.hibernate.StaleObjectStateException: строка была обновлена или удалена другой транзакцией (или несохраненным значением)отображение было неправильным) ", когда выполняется сохранение.
Это происходит, когда я начинаю выполнять этот метод одновременно в нескольких сеансах.Но тогда транзакция 1 определенно завершена, этот код выполняется снова для транзакции 2, и он все еще завершается неудачно!(Я использую сервис транзакций для повторного выполнения транзакций, когда они терпят неудачу из-за оптимистической блокировки, см. здесь ).
Как это может быть, хотя я получаю «свежую» версию отБД?