我正在使用带有 Objectify3.0 的 Java Google App Engine(因此某些类型可能看起来与标准 JPO/JPA 不同)。
无论如何,我希望能够检索按属性排序的所有实体并将其插入以供以后检索,以便您按照插入的排序顺序返回结果。
基本上,这意味着我想要一些东西:
- 检索按“名称”升序排序的所有实体(大约 10,000 个)。如果我尝试一次性获取所有实体,将达到 30 秒的响应限制。
- 将按顺序检索到的实体插入另一种称为:SortedByNameGame。这与游戏完全相同(见下文)。
- 从 SortedByNameGame 种类中检索实体(使用过滤器,例如流派 = 动作),但让它们以插入实体的升序“名称”属性顺序返回。
我的游戏类型如下所示:
public class Game {
@Id private Long id; //This is my key, auto generated by objectify
private String name;
private String genre;
private Date releasedate;
//ommitting getters and setters
}
我的 SortedByNameGame 类型如下所示:
public class SortedByNameGame {
@Id private Long id; //This is my key, auto generated by objectify
private Long gameid; //This is the Long id of the Game kind shown above
private String name;
private String genre;
private Date releasedate;
//ommitting getters and setters
}
我已经考虑并尝试了几种方法(围绕递归请求),但都没有成功。例如:
带有任务的光标:我基本上使用这种方法:http ://code.google.com/p/objectify-appengine/wiki/IntroductionToObjectify#Cursors
带有 RequestDispatcher.forward(request, response) 的游标。类似于http://code.google.com/p/objectify-appengine/wiki/IntroductionToObjectify#Cursors
带有 HttpServletResponse.sendRedirect(/pathToThisServlet) 的游标。类似于http://code.google.com/p/objectify-appengine/wiki/IntroductionToObjectify#Cursors
后端:http ://code.google.com/appengine/docs/java/backends/overview.html 。调查这一点,因为他们没有 30 秒的响应时间限制。但是,我还没有让这些工作,即不知道如何通过浏览器访问它们。我收到 404 错误禁止。
我怀疑请求相同 URL/Servlet 的递归方法是不可能的,即“为了防止应用程序导致请求的无休止递归,不允许请求处理程序获取自己的 URL。仍然可能导致无休止的使用其他方式进行递归,因此如果您的应用可以获取用户提供的 URL 请求,请谨慎行事。” (来源:http ://code.google.com/appengine/docs/java/urlfetch/overview.html#Responses )
我的问题是
我做错了什么,以至于没有创建这些递归队列任务或递归请求不起作用?
或者,还有哪些其他方法可以做我想做的事?