何时/为什么是" persistentValue"更新?

时间:2016-03-09 21:47:58

标签: grails

我想我错过了关于isDirty的一些信息。 doSomething()方法返回false。为什么呢?

class A {
    Integer x

    boolean doSomething() {
        callAMethodThatChangesPropertyX()
        callAMethodThatRunsACriteriaOverA()
        this.isDirty('x')
    }

1 个答案:

答案 0 :(得分:0)

执行callAMethodThatChangesPropertyX()callAMethodThatRunsACriteriaOverA()期间的Hibernate刷新会话。我宁可打赌callAMethodThatRunsACriteriaOverA(),特别是如果你在其中调用一些GORM查询。您可以通过简单的调试轻松检查它:

boolean doSomething() {
    print this.isDirty('x')
    callAMethodThatChangesPropertyX()
    print this.isDirty('x')
    callAMethodThatRunsACriteriaOverA()
    print this.isDirty('x')
}

此行为与FlushMode和HibernateTransactionManager直接相关。具体取决于您的Grails版本it may be different