hibernate - Grails withNewSession 不会刷新

标签 hibernate grails grails-orm hibernate-session

在 grails 域中,a 已实现 beforeDelete 如下

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

但是客户端商店 null 值不会持久保存到数据库中。

如果我添加手动 session 刷新

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

它有效,客户端商店值在数据库中为空。

这是 Grails 错误还是我误解了文档? withNewSession 不是意味着自动刷新吗?

最佳答案

文档(向下滚动到 beforeDelete 示例 here )似乎暗示不需要刷新或清除 session 。

Burt Beckwith还在 Grails 邮件列表上指出(请参阅线程 here ),在 withNewSession 中不需要手动调用 flush()clear() 关闭。

话虽如此,从 Grails 2.2.1 开始,似乎确实存在使用 withNewSession 的错误报告(请参阅详细信息 here)。

关于hibernate - Grails withNewSession 不会刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12750637/

相关文章:

groovy - 引用 Grails GORM 中的引用表的域对象

java - 在测试和 Controller 中标记为事务的方法的不同行为

java - 无法离开加入第二张 table

tomcat - Grails Assets 管道导致服务器错误

grails - 有什么方法可以从 Grails 中的 createCriteria 返回带有某些字段的 Map 吗?

java - Grails/GORM 动态查找器通过其关系 ID 而不是关系对象本身来获取域

java - Hibernate 连接无法在 Apache Tomcat 启动时运行

java - jpa中的集合对象

mysql - Grails 2.3.0 和 mysql 连接超时

tomcat - 如何将我的域 URL 映射到我的 Grails 应用程序的根文件夹?