我正在使用谷歌应用程序引擎和Objectify。我不知道如何在Objectify中声明外键。
任何帮助都将不胜感激。
谢谢。
发布于 2012-10-11 14:19:55
Google App Engine数据存储不是RDBMS数据库,因此外键的概念并不特别存在。通过在B的A中具有键属性,可以保存从实体A到实体B的引用。例如,考虑以下内容:
@Entity
public class A {
@Id Long id;
}
@Entity
public class B {
@Id Long id;
Key<A> referenceToA;
}有关GAE中数据建模的更多信息,请查看:
希望这能有所帮助!
发布于 2012-10-12 05:00:35
除了塔诺斯所说的,您还可以通过只存储类A的@Id的String/Long来存储从类B对类A的引用。这具有节省空间的优点,但缺点是类型安全。如果只是使用Long,那么它可以是数据存储中任何实体类型的ID,并且您的cod必须确保正确使用它,如果您存储键,则存储的是ID和实体类型,因此代码中出现错误的可能性较小。
发布于 2015-10-25 03:10:46
您可以简单地执行以下操作
@Entity
public class X {
@Id Long key;
}
@Entity
public class Y {
@Id Long key;
@Index X x;
}或
@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/setters (即使是Id),因为它们决定了您从客户端发出的REST调用中的值。
https://stackoverflow.com/questions/12831656
复制相似问题