我在使用Grails 2.2.2时遇到了间歇性问题。
控制器1:使用GORM保存对象(例如book.save()
)
控制器2:在同一个表(Groovy.sql
)上使用select * from BOOK...
进行本机查询
两个控制器都返回render ... as JSON
,而不是使用GSP。
浏览器立即连续击中两个控制器:控制器1击中控制器2后的回调。
通常这样可以正常工作,因为我假设在完成请求后刷新并关闭了底层的Hibernate会话。但在极少数情况下,似乎第二个控制器触发时尚未插入行。但是,如果我手动刷新控制器,行将正确插入 - 因此刷新正在发生,只比我预期的要晚几分钟。
在刷新会话之前,浏览器是否可能将响应视为已完成?
答案 0 :(得分:1)
请参阅:http://jira.grails.org/browse/GRAILS-11049#comment-79366
看起来好像调用Grails正在刷新servlet输出流,所以直到浏览器看到完整的响应之后才会刷新Hibernate会话。