理解grails中的domain.withNewSession?

时间:2016-07-12 04:59:18

标签: hibernate grails

我有一个简单的域类

package cat

class Cat {

    String name

    static constraints = {
    }
}

我读到withNewSession将打开一个新会话,因此它不使用任何先前查询的缓存结果。它强制系统从数据库重新查询。所以,我正在编写一些简单的测试代码来理解withNewSession的行为。

首先,我保存一只名为“tom”的猫,所以在数据库中我有一个名为“tom”的猫记录。现在我编写以下代码来理解withNewSession

import cat.*

def cc = Cat.get(1)

cc.name = "sylvester"

Cat.withNewSession{session ->

  println cc.name

}

在上面的代码中,我首先从数据库中获取名为“tom”的猫。然后,我将名称更改为“sylvester”。然后我开始一个新的会话,在里面查询获取的猫的名字。我的假设是系统将从数据库重新查询,因为新会话有一个空白的新缓存,因此从数据库重新查询将获取未修改的cat实例。但印刷的名称是修改后的名称,即“sylvester”。所以,我怀疑理解withNewSession的行为。有人可以通过提供一个更好的简单工作示例来表明withNewSession的行为吗?非常感谢你的帮助!谢谢!

0 个答案:

没有答案