0

我第一次将 JDO(使用 Datanucleus 实现)用于一个新项目,并且在使用 JDO 注释定义 1-N 单向拥有关系时遇到了麻烦。我需要的是在 a 中有一个集合SubitemsItem这样 aSubitem就没有对所有者的引用:

@PersistenceCapable(detachable = "true")
public class Item {
    ...
    @Persistent(defaultFetchGroup = "true")
    Collection<Subitem> subitems;
    ...
}

一切都很好,但是我如何定义关系映射到哪个现有的 RDBMS 列?AFAIK 通过在子表中创建不可为空的表列在数据库中实现拥有的 1-N,但我没有(也不想要)父引用类字段Subitem然后我可以用@Column(name="...")注释装饰.

以及如何@ForeignKey在 JDO3 中正确使用注解?注释接受 FK 约束的名称,但不接受相应的 FK 表和列规范。根据定义,FK 是参考。基于公共键的两个表之间的约束,但我似乎无法指定另一个表和一个公共键(@ForeginKey at Datanucleus JDO docs)。

编辑: @Element(column="...")应该使用注释:

@PersistenceCapable(detachable = "true")
public class Item {
    ...
    @Persistent(defaultFetchGroup = "true")
    @Element(column="itemId")
    Collection<Subitem> subitems;
    ...
}

正如答案中的文档链接中明确指出的那样。

4

1 回答 1

1

JDO(或JPA)没有“拥有”关系,只有关系(这是我只听说过与GAE数据存储相关的术语,你没有使用它)。

恕我直言,DataNucleus 文档充分定义了所有此类关系,因此只需从您到达的位置导航菜单,例如 http://www.datanucleus.org/products/accessplatform_3_1/jdo/orm/one_to_many_collection.html#fk_uni

http://www.datanucleus.org/products/accessplatform_3_1/jdo/orm/constraints.html#fk

于 2012-10-02T14:05:23.487 回答