Grails的withNewSession不放水(Grails withNewSession doe

2019-09-23 14:41发布

在Grails领域一个已经实现了beforeDelete如下

class Shop {
    def beforeDelete() {
        Shop.withNewSession {
            Client.findAllByShop(this)*.shop = null                 
        }    
    }
}

但客户店空值不会保存到数据库。

如果我添加手动刷新会话

class Shop {
    def beforeDelete() {
        Shop.withNewSession { s2->
            Client.findAllByShop(this)*.shop = null         
            s2.flush()  
            s2.clear()
        }
    }
}

它的工作原理,客户开店值在数据库归零。

这是一个Grails错误或我有误解的文件? 不withNewSession意味着自动冲水?

Answer 1:

文档(稍微向下滚动到beforeDelete例子在这里 ),似乎暗示冲洗或清除会话不是必需的。

伯特贝克威思也Grails的邮件列表上显示(见线程这里 )是手动调用flush()clear()是没有必要的withNewSession关闭。

随着中说,有确实出现了一个错误报告(见详情点击这里 )使用withNewSession开始使用Grails 2.2.1。



Answer 2:

withNewSession让你一个新的Hibernate Session,但它不一定是事务性的。 这听起来像你想使用withTransaction而不是withNewSession



文章来源: Grails withNewSession does not flush