请帮我解决这个错误。它有时会在其他时候出现。我知道它是因为并发请求但如何克服它?我尝试过锁定而不是获取,但它没有用。
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
}
我也尝试过使用merge,但似乎没什么帮助..有什么建议吗?
答案 0 :(得分:0)
我注意到的一件事是你的代码
user.merge()
return user
似乎有问题,因为正如http://grails.org/doc/latest/ref/Domain%20Classes/merge.html中指定的那样:
与save方法不同,此方法返回表示重新附加对象的类的新实例。 [...]如果您不使用merge方法的返回值,那么您仍然可以访问原始的分离实例,并且您将收到诸如延迟初始化异常之类的错误。
所以你的案例中的正确代码是
return user.merge()
但是,我不确定这是否能解决您的问题。