我正在尝试使用objectify从我的数据存储区中删除实体,但即使在关闭实例并重新启动它之后似乎也没有删除。这就是实体在数据存储区中的样子(无论是在生产服务器和开发服务器上):
这是我用来尝试删除它的代码:
@ApiMethod(name = "deleteDataVersion")
public Result deleteDataVersion(@Named("id") String id) {
// Where id is the id of the entity in the datastore.
if (id != null && !id.equals("")) {
ofy().delete().type(DataVersion.class).id(id).now();
return new Result(Result.STATUS_SUCCESS);
} else
return new Result(Result.STATUS_FAILED);
}
我也试过这段代码:
@ApiMethod(name = "deleteDataVersion")
public Result deleteDataVersion(@Named("id") String id) {
if (id != null && !id.equals("")) {
// DataVersion doesn't have a parent.
Key<DataVersion> key = Key.create(null, DataVersion.class, id);
ofy().delete().key(key).now();
return new Result(Result.STATUS_SUCCESS);
} else
return new Result(Result.STATUS_FAILED);
}
但实体永远不会被删除。这是我的实体的代码:
@Entity
public class DataVersion {
@Id
private Long id;
String folderName;
@Index
String effective;
public DataVersion() {
}
public DataVersion(String folderName, String effective ) {
this.folderName= folderName;
this.effective = effective;
}
// Getters & setters..
}
我似乎无法找到问题所在:(任何帮助都会非常感激!我确定这是我忽视的一些小问题(相当新的Objectify / AppEngine)。
答案 0 :(得分:5)
Endpoint中参数中的ID是一个String,您尝试删除ID为Long的对象DataVersion。
ofy().delete().type(DataVersion.class).id(Long.valueOf(id)).now();
会更好用!
答案 1 :(得分:0)
首先拿到钥匙
Key<DataVersion> key = Key.create(null, DataVersion.class, id);
然后使用密钥从数据库中获取实体
DataVersion dataVersion = ofy().load().key(key).now();
然后使用objectify删除实体
ofy().delete().entity(dataVersion).now();