在grails域中,a已实现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
是否意味着自动冲洗?
答案 0 :(得分:3)
文档(向下滚动到beforeDelete
示例here)似乎意味着不需要刷新或清除会话。
Burt Beckwith也在Grails邮件列表上显示(请参阅主题here),flush()
中不需要手动调用clear()
和withNewSession
闭合。
据说,从Grails 2.2.1开始,使用withNewSession
似乎确实存在错误报告(请参阅详细信息here。
答案 1 :(得分:0)
withNewSession
为您提供了一个新的Hibernate会话,但它不一定是事务性的。听起来您想使用withTransaction
代替withNewSession
。