【问题标题】:Implement One-To-Many bi-directional relationship in app engine Java在应用程序引擎 Java 中实现一对多双向关系
【发布时间】:2014-04-24 04:25:15
【问题描述】:

我想在我的应用引擎应用程序中实现双向一对多关系。我有两个实体 - 实体 A(父)和实体 B(子)。

家长:

    @Entity
    public class A implements Serializable {

        @Id
        private String aId;

        @OneToMany(mappedBy = "objA", cascade = CascadeType.ALL)
        List<B> bList;

        getter().........setter()
   }

孩子:

      @Entity
      public class B implements Serializable {

        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private Key bId;

        @ManyToOne(fetch = FetchType.LAZY)
        private A parentA;

            getter().........setter()
      }

在这里,起初我坚持 A 类的对象,当时我没有设置它的 bList 属性。之后,我创建 B 的对象并更新 A 的 setbList(),这将自动将 B 类型的对象持久保存在数据存储中(因为我在这里设置了 cascade=CascadeType.ALL)。现在我想从 B 对象访问 A。(从孩子的父母)在我的 android 客户端中使用的端点类中。我怎样才能做到这一点?

【问题讨论】:

    标签: java android google-app-engine google-cloud-datastore google-cloud-endpoints


    【解决方案1】:

    您只需要在 B 类中添加对 A 的引用

    private A parentA;
    
    parentA = //whatever you use when you update setbList()
    

    祝你好运!

    【讨论】:

    • 嘿,我编辑了我的代码。你可以看到。我已经按照你说的写了,但是当我尝试设置 parentA 的值时,它会抛出 JsonMappingException 进行递归。
    • 你能发布 B 类吗?
    • JsonMappingException 与数据存储(或一般的持久性)无关。它是由您的序列化框架生成的,因为对象 A B. 之间存在循环引用
    • @Roy..我已经编辑了我的代码。你可以在那里查看我的 B 类。
    • @MichaelakoTecourt..我知道它只是因为 AB..之间的循环引用所以我应该怎么做才能让它工作?
    猜你喜欢
    • 1970-01-01
    • 2011-05-24
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-14
    • 1970-01-01
    • 2012-11-17
    相关资源
    最近更新 更多