我需要从数据库中删除所有实体,这些实体在“名称”属性中包含“-”符号。
我需要查询什么?
附言爪哇
最佳答案
您不能在仅一个查询的GAE数据存储中执行此操作,因为该数据存储不支持“包含”查询。因此,您有两个选择:
选择所有实体并遍历结果集,检查名称是否包含“-”。
添加新属性,例如将“ nameContainsDash”添加到您的实体,并查询所有将此属性设置为true
的实体。每次更新名称时,都会更新此属性。
...
public void setName(String name) {
this.name = name;
nameContainsDash = name.contains("-");
}
public boolean isNameContainsDash() {
return nameContainsDash;
}
...
当然,第二个选项可能需要数据迁移,因为对于现有实体,该属性将为
null
。