2

Objectify 4 を使用していくつかのパラメーターで適切にフィルター処理するには、これらのパラメーターの一部が空になる可能性があることを考慮して、それらでフィルター処理したくないことを意味しますか? 例: 次のようなものをフィルタリングしたいと考えてください:

      releases = ofy().load().type(Release.class)
                .filter("user.name", searchCriteria.getName())
                .filter("category", searchCriteria.getCategory())
                .filter("city", searchCriteria.getCity()).list();

上記の内容と一致させるために、次のコードを用意しました。どのパラメーターが空になるかを毎回チェックするため、その場合はフィルターに入れません。

    if (!nameEmpty && !categoryEmpty && !cityEmpty) {
        releases = ofy().load().type(Release.class)
                .filter("user.name", searchCriteria.getName())
                .filter("category", searchCriteria.getCategory())
                .filter("city", searchCriteria.getCity()).list();
    } else if (!nameEmpty && !categoryEmpty) {
        releases = ofy().load().type(Release.class)
                .filter("user.name", searchCriteria.getName())
                .filter("category", searchCriteria.getCategory()).list();
    } else if (!nameEmpty && !cityEmpty) {
        releases = ofy().load().type(Release.class)
                .filter("user.name", searchCriteria.getName())
                .filter("city", searchCriteria.getCity()).list();
    } else if ...

       ...

Objectify 4 を使用して、このくだらないフィルタリング方法を回避し、1 行 (または数行) だけで作成するにはどうすればよいでしょうか?

4

1 に答える 1

5
Query<Release> query = ofy().load().type(Release.class);

if (!nameEmpty)
    query = query.filter("user.name", searchCriteria.getName());

if (!categoryEmpty)
    query = query.filter("category", searchCriteria.getCategory())

if (!cityEmpty)
    query = query.filter("city", searchCriteria.getCity());

releases = query.list();
于 2012-11-26T16:57:30.303 に答える