Grails什么时候关闭/刷新Hibernate会话?

时间:2014-01-27 18:06:29

标签: grails

我在使用Grails 2.2.2时遇到了间歇性问题。

控制器1:使用GORM保存对象(例如book.save()) 控制器2:在同一个表(Groovy.sql)上使用select * from BOOK...进行本机查询

两个控制器都返回render ... as JSON,而不是使用GSP。

浏览器立即连续击中两个控制器:控制器1击中控制器2后的回调。

通常这样可以正常工作,因为我假设在完成请求后刷新并关闭了底层的Hibernate会话。但在极少数情况下,似乎第二个控制器触发时尚未插入行。但是,如果我手动刷新控制器,行将正确插入 - 因此刷新正在发生,只比我预期的要晚几分钟。

在刷新会话之前,浏览器是否可能将响应视为已完成?

1 个答案:

答案 0 :(得分:1)

请参阅:http://jira.grails.org/browse/GRAILS-11049#comment-79366

看起来好像调用Grails正在刷新servlet输出流,所以直到浏览器看到完整的响应之后才会刷新Hibernate会话。