【问题标题】:Migrating existing entities to use entity groups迁移现有实体以使用实体组
【发布时间】:2016-06-07 14:59:18
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    首先,您仍然可以在实体组之外使用事务 - 这称为跨组事务(XG 事务)。不过,您在交易中仅限于 25 个实体组

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

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

    【讨论】:

    • 啊,是的,我知道 XG 交易。我应该在最初的问题中澄清我需要涉及超过 25 个实体的交易:D。尽管如此,你的第二部分答案是我需要的。我希望有一种方法可以不用创建新的实体类型,因为原始实体的编码 pk 被使用并存储在业务逻辑和其他实体中。
    猜你喜欢
    • 2011-09-02
    • 2021-10-17
    • 2012-07-08
    • 1970-01-01
    • 2015-05-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多