Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 按键删除实体,而不首先在app engine中获取它(使用JDO)_Java_Google App Engine_Jdo_Datanucleus - Fatal编程技术网

Java 按键删除实体,而不首先在app engine中获取它(使用JDO)

Java 按键删除实体,而不首先在app engine中获取它(使用JDO),java,google-app-engine,jdo,datanucleus,Java,Google App Engine,Jdo,Datanucleus,有没有一种方法可以删除实体而不必首先从数据存储中获取它?我假设我已经拥有实体的密钥或id。 我正在考虑类似于PersistenceManager上的getObjectById的东西 我能想到的最接近的方法是使用Query.deletePersistentAll()(如图所示)并指定一个仅依赖于键的查询,但我无法判断在删除实体之前是否要获取该实体 谢谢 编辑:我知道如何使用低级API以及python API来完成这项工作。我想知道是否有一种方法可以在JDO层中实现这一点。如何使用 我认为DataS

有没有一种方法可以删除实体而不必首先从数据存储中获取它?我假设我已经拥有实体的密钥或id。 我正在考虑类似于
PersistenceManager
上的
getObjectById
的东西

我能想到的最接近的方法是使用
Query.deletePersistentAll()
(如图所示)并指定一个仅依赖于键的查询,但我无法判断在删除实体之前是否要获取该实体

谢谢

编辑:我知道如何使用低级API以及python API来完成这项工作。我想知道是否有一种方法可以在JDO层中实现这一点。

如何使用

我认为
DataService.delete(Key)
将完全满足您的需要

如果使用长as键,则需要先使用KeyMaker创建键

Key k = KeyFactory.createKey(Employee.class.getSimpleName(), "Alfred.Smith@example.com");

datanucleus回答了我关于以下方面的问题:

不是真的。问题是一个物体可以有关系,所以, 由于这些可能导致操作级联,因此通常必须 首先加载到内存中。唯一不需要的情况是 如果要删除的对象的类具有 没有关系

进入低级API并清除对象可能是,也可能不是 对相关对象产生影响。。。也许有人负责 它可以就此发表评论


我对JDO不太确定,但对于Python来说,只要稍加修改,这是可能的。您需要使用相同的键“创建”一个新实例,然后将其删除。它只会命中数据库一次

instance = Model(key=key_to_delete, required_property='dummy')
instance.delete()

我知道该功能存在于数据存储中,我正在尝试确定是否可以从JDO层中访问它。