3

有没有办法删除实体而不必先从数据存储中获取它?我假设我已经拥有实体的密钥或 ID。我在想类似的东西deleteObjectById会类似于getObjectByIdon PersistenceManager

我能想到的最接近的方法是使用Query.deletePersistentAll()(如此处所示并指定仅依赖于密钥的查询,但我不知道这是否会在删除实体之前获取实体。

谢谢

编辑:我知道如何使用低级 API 以及 python API 来做到这一点。我想知道是否有办法在 JDO 层中做到这一点。

4

3 回答 3

2

datanucleus 在google 群组上回答了我的问题:

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

进入低级 API 并炸毁对象可能会或可能不会对相关对象产生影响……也许负责它的人可以对此发表评论。

于 2009-11-11T04:51:22.160 回答
2

我不确定 JDO,但对于 Python,这可以通过一个小技巧来实现。您需要使用相同的密钥“创建”一个新实例,然后将其删除。它只会访问数据库一次。

instance = Model(key=key_to_delete, required_property='dummy')
instance.delete()
于 2010-05-23T13:02:20.543 回答
0

使用低级 API怎么样?

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

如果您使用 Long as 密钥,您将需要先使用 KeyMaker 来创建密钥。

Key k = KeyFactory.createKey(Employee.class.getSimpleName(), "Alfred.Smith@example.com");
于 2009-11-09T13:45:19.050 回答