Android Objectify:按id删除整行

Android Objectify:按id删除整行,android,google-app-engine,delete-row,objectify,objectify-delete,Android,Google App Engine,Delete Row,Objectify,Objectify Delete,我需要检查一个字段是否包含特定的字符串,如果包含,则按id删除整行。 此代码不起作用: Query<Bet> query = ofy().load().type(Movie.class); for (Movie m : query) { List<String> list = m.getActors(); String search = "Brad Pitt"; for (Strin

我需要检查一个字段是否包含特定的
字符串
,如果包含,则按id删除整行。 此代码不起作用:

Query<Bet> query = ofy().load().type(Movie.class);

        for (Movie m : query) {
            List<String> list = m.getActors();
            String search = "Brad Pitt";
            for (String str : list) {
                if (str.trim().contains(search)) {
                    ofy().delete().type(Movie.class).id(m.getId()).now();

                }
            }
        }
Query Query=ofy().load().type(Movie.class);
for(电影m:query){
List=m.getActors();
字符串搜索=“布拉德·皮特”;
for(字符串str:list){
如果(str.trim()包含(搜索)){
ofy().delete().type(Movie.class).id(m.getId()).now();
}
}
}
在这种情况下(删除所有以布拉德·皮特为演员的电影),您可以删除如下实体:

Query<Movie> query = ofy().load().type(User.class);

for (Movie m : query) {
    List<String> list = m.getActors();
    String search = "Brad Pitt";
    for (String str : list) {
        if (str.trim().contains(search)) {
            ofy().delete().entity(m).now();
        }
    }
}
Query<Movie> query = ofy().load().type(User.class);
List<Movie> toDelete = new ArrayList<>();

for (Movie m : query) {
    List<String> list = m.getActors();
    String search = "Brad Pitt";
    for (String str : list) {
        if (str.trim().contains(search)) {
            toDelete.add(m);
        }
    }
}

ofy().delete().entities(toDelete).now();
ofy().delete().type(Movie.class).id(idToDelete);
Key<MyParentClass> parent = Key.create(MyParentClass.class, myParentId);
ofy().delete().type(Movie.class).parent(parent).id(idToDelete);
在循环中执行数据库操作是一种糟糕的风格,如果可能的话应该避免

还有一件事:

如果必须按id删除实体,则该行如下所示:

Query<Movie> query = ofy().load().type(User.class);

for (Movie m : query) {
    List<String> list = m.getActors();
    String search = "Brad Pitt";
    for (String str : list) {
        if (str.trim().contains(search)) {
            ofy().delete().entity(m).now();
        }
    }
}
Query<Movie> query = ofy().load().type(User.class);
List<Movie> toDelete = new ArrayList<>();

for (Movie m : query) {
    List<String> list = m.getActors();
    String search = "Brad Pitt";
    for (String str : list) {
        if (str.trim().contains(search)) {
            toDelete.add(m);
        }
    }
}

ofy().delete().entities(toDelete).now();
ofy().delete().type(Movie.class).id(idToDelete);
Key<MyParentClass> parent = Key.create(MyParentClass.class, myParentId);
ofy().delete().type(Movie.class).parent(parent).id(idToDelete);
但是,正如我之前所暗示的,如果您的
Movie
类有一个父类,这将不起作用,因为您必须始终指定整个键,因此对于祖先,该行将如下所示:

Query<Movie> query = ofy().load().type(User.class);

for (Movie m : query) {
    List<String> list = m.getActors();
    String search = "Brad Pitt";
    for (String str : list) {
        if (str.trim().contains(search)) {
            ofy().delete().entity(m).now();
        }
    }
}
Query<Movie> query = ofy().load().type(User.class);
List<Movie> toDelete = new ArrayList<>();

for (Movie m : query) {
    List<String> list = m.getActors();
    String search = "Brad Pitt";
    for (String str : list) {
        if (str.trim().contains(search)) {
            toDelete.add(m);
        }
    }
}

ofy().delete().entities(toDelete).now();
ofy().delete().type(Movie.class).id(idToDelete);
Key<MyParentClass> parent = Key.create(MyParentClass.class, myParentId);
ofy().delete().type(Movie.class).parent(parent).id(idToDelete);

当你说没用的时候。。。。你有错误吗?你需要明确解释你所说的“不起作用”是什么意思。只需看一下你的个人资料。你有7个问题,没有一个你接受了答案。如果你重视他人的帮助,你应该选择有用的答案并接受解决方案。否则人们将来可能会不太愿意帮助你。@konqi再次感谢你的耐心和帮助。我会接受答案,很抱歉没有早点做。再见!不幸的是,它没有工作,我有一个错误:`99%端点配置没有更新。当Google Cloud Endpoints服务器尝试与其通信时,应用程序返回了一个错误。com.google.appengine.tools.admin.AppVersionUpload CheckEndpointsServingsStatusResult 99%有关详细信息,请参阅部署疑难解答文档:。99%忽略端点失败并继续更新。严重:端点配置未更新。当Google Cloud Endpoints服务器试图与其通信时,应用程序返回了一个错误。@GidiSprintzin这看起来完全是另一个问题。请用MCV示例()打开一个新问题,以便我们可以分析它。作为一个起点,我会清理项目并进行完整的重建。我认为我的代码的问题是,在字段中我有一个数组,看起来是这样的:
[{“stringValue”:“yyy”,“indexed”:false},{“stringValue”:“Brad Pitt”,“indexed”:false},{“stringValue”:“jhon13”,“indexed”:false}]
,我不知道如何提取名称。