Objectify - 如何申报外键?

时间:2012-10-11 03:17:09

标签: google-app-engine foreign-keys objectify declare

我正在使用Google应用引擎和Objectify。我无法找到如何在Objectify中声明外键。

任何帮助都会非常感激。

感谢。

3 个答案:

答案 0 :(得分:2)

Google App Engine数据存储区不是RDBMS数据库,因此外键的概念并不特别存在。您可以通过在B的A中具有Key属性来将实体A的引用保存到实体B.例如,请考虑以下内容:

@Entity
public class A {
    @Id Long id;
}

@Entity
public class B {
    @Id Long id;
    Key<A> referenceToA;
}

有关GAE中数据建模的更多信息,请查看:

希望这有帮助!

答案 1 :(得分:0)

除了thanos所说的,你可以通过存储A类的@Id的String / Long来存储对B类的A类的引用。这样做有节省空间的优点,但是类型安全的缺点。如果您只使用Long,那么它可以是数据存储中任何实体类型的ID,并且您的cod必须确保它正确使用,如果您存储了存储ID和实体类型的密钥,那么您就更少了可能在您的代码中出错。

答案 2 :(得分:0)

你可以简单地做

@Entity
public class X {
    @Id Long key;
}

@Entity
public class Y {
    @Id Long key;
    @Index X x;
}

OR

@Entity
public class Y {
    @Id Long key;
    @Load @Parent @Index Ref<X> x;
    public User getX() { return this.x.get(); }
    public void setX(X value) { this.x= Ref.Create(value); }
}

注意:永远不要忘记getter / setter(即使是Id),因为它们确定您从客户端调用REST调用中的值。