【问题标题】:Embedded entities in Objectify don't appear to auto-generate an IdObjectify 中的嵌入式实体似乎不会自动生成 Id
【发布时间】:2011-08-24 06:12:27
【问题描述】:

我在我的第一个严肃的 Google App Engine 项目中使用 Objectify,而且通常一切都很顺利(多么可爱的库!)。不幸的是,我在持久化实体时遇到了问题。

我的基本结构如下:

@Entity
class Parent {
    @Id
    long id = 123;
    @Embedded
    Child[] children;
}

@Entity
class Child {
    @Id
    Long id;
}

我正在手动声明父实体的 id,但我希望嵌入的子实体自动生成一个 id。我确实想知道是否完全删除子实体中的 @Id 并围绕它进行编码,但后来我收到有关需要 @Id 的实体的错误。

有人可以帮忙吗?我正在使用 id 来比较父实体的子实体之间的变化,所以它对我目前的设计方式来说是相当基础的。不过,如果那会是更好的解决方案,我可以重新架构。

【问题讨论】:

    标签: java google-app-engine objectify


    【解决方案1】:

    http://code.google.com/p/objectify-appengine/wiki/IntroductionToObjectify#Entity_Representation 看来,@Embedded 实体实际上根本不是数据存储中的独立实体。它们只是作为属性直接存储在父对象的字段中。

    如果您希望子实体成为它们自己的、可单独访问的对象,您应该更改 Parent 以保存一组键或 ID,然后分别实例化您的 Child 对象。这将为每个 Child 生成 id(您可以将其存储在 Parent 的 id 数组中)。

    【讨论】:

    • 好的,谢谢。这听起来很明智,尽管我担心一些概念对我来说仍然有点太新,目前无法准确理解每一点。我将相应地重新架构,并尝试重新阅读该链接几次;)
    猜你喜欢
    • 2016-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-15
    • 1970-01-01
    相关资源
    最近更新 更多