справка по ошибке org.hibernate.StaleObjectStateException - PullRequest
0 голосов
/ 05 августа 2011

Пожалуйста, помогите мне обойти эту ошибку.Это иногда случается в другое время.Я знаю это из-за одновременных запросов, но как это преодолеть ??Я попытался заблокировать вместо get, но это не сработало.

org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect):

Мой код:

def principal = springSecurityService.principal
    if (principal instanceof String)
        return null
    else {
        def user = NayaxUser.get(principal.id)
        user.merge()
        return user
    }

Я также пытался использовать слияние, но ничего не помогает??

1 Ответ

0 голосов
/ 05 августа 2011

Одна вещь, которую я заметил, это то, что ваш код

user.merge()
return user

кажется проблематичным, потому что, как указано в http://grails.org/doc/latest/ref/Domain%20Classes/merge.html:

В отличие от метода save этот метод возвращает новый экземпляр класса, представляющий повторно присоединенный объект. [...] Если вы не используете возвращаемое значение метода слияния, то у вас все еще есть доступ к исходному отдельному экземпляру, и вы получите ошибки, такие как исключения отложенной инициализации.

Таким образом, правильный код в вашем случае будет

return user.merge()

Однако я не уверен, решит ли это вашу проблему.

...