重定向后未准备好保存的数据-PlayFramework 1.2.4

重定向后未准备好保存的数据-PlayFramework 1.2.4,playframework,Playframework,使用Play Framework 1.2.4,如果我将一些数据发布到某个操作,然后重定向到另一个操作,例如: public static void post(Entity entity) { entity.save(); index(); } 我刚才保存的数据(entity.save())此时尚未准备就绪。因此,如果index()应该列出所有实体,包括我刚刚创建的实体,那么它就不会列出。我必须重新加载页面才能在列表中看到该实体 有人经历过这个吗?有什么建议吗?不应该是这样。调用

使用Play Framework 1.2.4,如果我将一些数据发布到某个操作,然后重定向到另一个操作,例如:

public static void post(Entity entity)
{
    entity.save();
    index();
}
我刚才保存的数据(entity.save())此时尚未准备就绪。因此,如果index()应该列出所有实体,包括我刚刚创建的实体,那么它就不会列出。我必须重新加载页面才能在列表中看到该实体


有人经历过这个吗?有什么建议吗?

不应该是这样。调用
index()
时,Play将执行浏览器重定向,这样服务器就完全完成了请求,并发出一个全新的请求来执行索引操作


我认为您的错误一定在其他地方,因为您所描述的是游戏应用程序中非常常见的做法,而且我以前从未见过您所描述的行为。

我不知道。它曾经工作过,可能使用1.2.2。我将save()部分放入作业中,并等待它完成。这似乎解决了问题。我只是希望我不必每次都这样做,我想保存一些东西。我还尝试在控制器内提交事务,但没有成功——也许我做得不对。顺便说一句,这种情况只在本地发生,我想(我猜在prod服务器上它不会运行得那么快)事实上,在尝试了更多之后,工作的事情就不起作用了。它有时工作,有时不工作。Thread.sleep(1000)似乎可以解决问题,但我再次强调,我不应该阻止。在保存实体和实际将其提交到数据库之间,这可能是一个休眠过程,但我从未见过这种情况……请在
application.conf
中检查
play.pool
,您可能在
dev
模式下运行单线程,并且可以根据您部署应用程序的方式解释
prod
中的不同行为