Objectify3.0 で Java Google App Engine を使用しています (そのため、一部の種類は標準の JPO/JPA とは異なるように見える場合があります)。
とにかく、プロパティでソートされたすべてのエンティティを取得し、後で取得するために挿入して、挿入されたソート順で結果を取得できるようにしたいと考えています。
基本的に、これは私がいくつかのことをしたいことを意味します:
- 「名前」で昇順にソートされたすべてのエンティティ (約 10,000) を取得します。一度にすべてのエンティティを取得しようとすると、30 秒の応答制限に達します。
- 取得した順序のエンティティを、SortedByNameGame という別の種類に挿入します。これは、ゲームとまったく同じ種類です (以下を参照)。
- SortedByNameGame の種類からエンティティ (たとえば、genre = action を使用) を取得しますが、エンティティが挿入された "名前" プロパティの昇順で並べ替えて返されます。
私のゲームの種類は次のようになります。
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 Error Forbidden が表示されます。
同じ URL/サーブレットを要求する再帰的なアプローチは不可能だと思います。つまり、「アプリが要求の無限の再帰を引き起こすのを防ぐために、要求ハンドラーは独自の URL を取得することを許可されていません。それでも、無限の原因になる可能性があります。ユーザーが提供する URL のリクエストをアプリで取得できる場合は注意が必要です。」(ソース: http://code.google.com/appengine/docs/java/urlfetch/overview.html#Responses )
私の質問は
これらの再帰キュー タスクが作成されていない、または再帰リクエストが機能していないなど、何が間違っていますか?
または、私が望むことを行うために他にどのようなアプローチが存在しますか?