我正在使用Google应用引擎和Objectify。我无法找到如何在Objectify中声明外键。
任何帮助都会非常感激。
感谢。
答案 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调用中的值。