我想我错过了关于isDirty的一些信息。 doSomething()方法返回false。为什么呢?
class A {
Integer x
boolean doSomething() {
callAMethodThatChangesPropertyX()
callAMethodThatRunsACriteriaOverA()
this.isDirty('x')
}
答案 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。