我有一个简单的域类
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的行为吗?非常感谢你的帮助!谢谢!