【问题标题】:JDO and app engine: defining the primary key as subclass memberJDO 和应用引擎:将主键定义为子类成员
【发布时间】:2012-01-24 16:53:44
【问题描述】:

我有以下课程:

@PersistenceCapable
class Store {

  // ???
  User admin;
  ...

  @Persistent
  @Element(dependent = true)
  List<Item> items;

}

@PersistenceCapable
class User {

  @PrimaryKey
  @Persistent
  String email;

}

@PersistenceCapable
class Item {

  @PrimaryKey
  @Persistent
  String itemCode;

  ...

}

我想让 admin.email 成为 Store 实体的主键。 应用引擎上的 JDO 可以做到这一点吗?我应该如何进行?

感谢您的帮助,

约翰·戈奇

【问题讨论】:

    标签: google-app-engine jdo datanucleus


    【解决方案1】:

    您可以通过将 PK 标记为 PK 并为 Store 定义一个 PK 类,按照“复合身份”的 DataNucleus 文档(并且由于 admin.email 是 User 的 PK,所以这是相同的),即可将 PK 设为“管理员”

    【讨论】:

    • 我看过datanucleus.org/products/accessplatform/jdo/orm/…,但我仍然有些困惑。我需要创建一个名为 PK 的内部静态类吗?以及如何使用注释而不是 XML 来做到这一点。在我的特殊情况下,商店和用户之间的关系是 1-1。
    • 您创建一个 PK 类...无论是内部类还是单独类都取决于您。注释与 PK Class 有什么关系?您只需将 Store 类的“objectid-class”标记为此 PK 类
    • 对不起,如果我没有完全遵循,你能发布一些代码吗? PK类究竟是什么?
    • 您所指的页面有一个示例,而我所指的“PK 类”在这种情况下是名为“PK”的类;-) 例如 Account.PK
    • 将“admin.email”作为PK,您将“admin”作为PK。要使用复合 id,您需要它......所以只需复制该示例并更改字段/类的名称。
    猜你喜欢
    • 1970-01-01
    • 2012-04-20
    • 2012-02-20
    • 1970-01-01
    • 1970-01-01
    • 2015-02-14
    • 2011-12-12
    • 1970-01-01
    • 2014-07-31
    相关资源
    最近更新 更多