迁移现有实体以使用实体组

时间:2016-06-07 14:59:18

标签: java google-app-engine jdo google-cloud-datastore eventual-consistency

我正在使用遗留GAE系统,使用JDO 2.3,它不使用实体组,但我现在希望使用实体组来利用事务。在两个实体类型上添加了一对多关系后,这对于创建的新实体正常工作,但在使用没有父子关系的现有遗留实体(无法删除子实体)时会导致问题。

如何迁移现有的旧实体以使用新架构?我尝试更新子类的父级,但收到了org.datanucleus.store.appengine.DatastoreRelationFieldManager$ChildWithoutParentException ... A parent cannot be established or changed once an object has been persisted.

1 个答案:

答案 0 :(得分:1)

首先,您仍然可以使用实体组之外的交易 - 它被称为跨群交易(XG交易)。但是,您在交易中仅限于 25个实体组

注意:在您的情况下,每个实体都是一个实体组。

实体的实体组是在创建时定义的不可变属性。这意味着你需要删除然后在事务中用正确的父集写一个新的实体。