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}]
,我不知道如何提取名称。