首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Objectify -如何声明外键?

Objectify -如何声明外键?
EN

Stack Overflow用户
提问于 2012-10-11 11:17:09
回答 3查看 609关注 0票数 2

我正在使用谷歌应用程序引擎和Objectify。我不知道如何在Objectify中声明外键。

任何帮助都将不胜感激。

谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-10-11 14:19:55

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

代码语言:javascript
复制
@Entity
public class A {
    @Id Long id;
}

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

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

希望这能有所帮助!

票数 2
EN

Stack Overflow用户

发布于 2012-10-12 05:00:35

除了塔诺斯所说的,您还可以通过只存储类A的@Id的String/Long来存储从类B对类A的引用。这具有节省空间的优点,但缺点是类型安全。如果只是使用Long,那么它可以是数据存储中任何实体类型的ID,并且您的cod必须确保正确使用它,如果您存储键,则存储的是ID和实体类型,因此代码中出现错误的可能性较小。

票数 0
EN

Stack Overflow用户

发布于 2015-10-25 03:10:46

您可以简单地执行以下操作

代码语言:javascript
复制
@Entity
public class X {
    @Id Long key;
}

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

代码语言:javascript
复制
@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调用中的值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12831656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档