我有这样创建的实体:
public String addNewStockName(String newStock) throws DelistedException {
Entity stock = new Entity("Stocks");
stock.setProperty("Name", newStock);
ds.put(stock);
return "OK";
}
尝试像这样删除特定实体:
public String deleteStockName(String stockName){
Key key = KeyFactory.createKey("Stocks", stockName);
ds.delete(key);
return "OK";
}
并且它不会删除具有属性“ stockName”的实体。为什么?
最佳答案
您的Stocks
实体具有一个名为"Name"
的属性。这与键名不同。
您必须执行查询以获取与"Name=?"
过滤器匹配的实体或实体键。
像这样:
public String deleteStockName(String stockName) {
DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
Filter f = new FilterPredicate("Name", FilterOperator.EQUAL, stockName);
Query q = new Query("Stocks").setFilter(f).setKeysOnly();
List<Entity> results = ds.prepare(q)
.asList(FetchOptions.Builder.withDefaults());
if (results.isEmpty())
return "Not Found!";
ds.delete(results.get(0).getKey());
return "OK";
}
关于java - 无法删除在Java GAE中设置了特定属性的实体,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30623312/