【问题标题】:Objectify - How to declare a foreign key?Objectify - 如何声明外键?
【发布时间】:2012-10-11 03:17:09
【问题描述】:

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

任何帮助将不胜感激。

谢谢。

【问题讨论】:

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


    【解决方案1】:

    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 中数据建模的更多信息,请查看:

    希望这会有所帮助!

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      你可以这样做

      @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/setter(即使是 Id),因为它们决定了您从客户端进行的 REST 调用中的值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-11-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-07
        • 1970-01-01
        • 2011-01-17
        相关资源
        最近更新 更多