Objectify删除似乎不起作用

Gyr*_*ope 3 google-app-engine objectify google-cloud-endpoints

我正在尝试使用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);
}
Run Code Online (Sandbox Code Playgroud)

我也试过这段代码:

@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);
}
Run Code Online (Sandbox Code Playgroud)

但该实体永远不会被删除.这是我的实体的代码:

@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..
}
Run Code Online (Sandbox Code Playgroud)

我似乎无法找到问题所在:(任何帮助都会非常感激!我确定这是我忽视的一些小问题(相当新的Objectify/AppEngine).

小智 5

您在Endpoint中的参数中的ID是一个String,并且您尝试删除ID为Long的对象DataVersion.

ofy().delete().type(DataVersion.class).id(Long.valueOf(id)).now();
Run Code Online (Sandbox Code Playgroud)

会更好!