两个线程,相同的版本号但没有StaleObject异常

时间:2015-08-07 08:53:16

标签: hibernate grails gorm

我有一个场景,其中两个动作更新了一个Domain对象。有时基于时间,两个动作同时(几乎)被调用,并且它们获取的域对象包含相同的版本号。现在,其中一个操作将首先更新域对象,当另一个操作更新时,应该会出现错误,因为首先更新对象的操作必须增加版本号,因此它应该抛出staleObjectException。但在我的情况下,对象成功更新,没有异常被抛出。只是想知道为什么?

以下是再现的场景(有时基于点击时间)

    // Gets called at a regular interval via ajax call

    updateTime(){
    DomainA obj = DomainA.get(id)
    println obj.version // prints 5
    obj.setSomeProperty(value)
    obj.save(failOnError:true)
    }

    // Gets called on a click of a button(Normal request)

    pause(){
    DomainA obj = DomainA.get(sameid)
    println obj.version // prints 5
    obj.setSomeProperty(value)
    obj.save(failOnError:true)
    }

0 个答案:

没有答案