有没有办法删除实体而无需先从数据存储区中获取它?我假设我已经拥有该实体的密钥或ID。
我想deleteObjectById
之类的内容与getObjectById
上的PersistenceManager
类似。
我能想到的最接近的是使用Query.deletePersistentAll()
(如here所示)并指定仅依赖于密钥的查询,但我无法判断是否会获取实体在删除之前。
感谢
编辑:我知道如何使用低级API以及python API执行此操作。我想知道是否有办法在JDO层内完成它。答案 0 :(得分:2)
datanucleus在google group上回答了我的问题:
不是真的。问题是对象可以有关系等等, 因为这些可能导致级联操作,所以通常必须这样做 首先加载到内存中。它不需要的唯一情况 如果要删除的对象的类有,则加载到内存中 没有关系。
进入低级API并且可能会也可能没有爆破对象 对相关对象产生影响......也许有人负责 它可以对此发表评论。
答案 1 :(得分:2)
我不确定JDO,但对于Python来说,这可能是一个小小的黑客。您需要使用相同的密钥“创建”新实例,然后将其删除。它只会打一次数据库。
instance = Model(key=key_to_delete, required_property='dummy')
instance.delete()
答案 2 :(得分:0)
如何使用Low-level API?
我认为DataService.delete(Key)
将完全符合您的需求。
如果您使用Long作为密钥,您将首先使用KeyMaker创建密钥。
Key k = KeyFactory.createKey(Employee.class.getSimpleName(), "Alfred.Smith@example.com");