【问题标题】:One-To-Many relationship in ORMLite AndroidORMLite Android中的一对多关系
【发布时间】:2013-06-30 18:30:47
【问题描述】:

如何在 ORMLite Android 中实现一对多关系?

请查找示例

public class A {
 private String name;
    @DatabaseField (foreign = true, foreignAutoRefresh = true, columnName = "A")
    private B b;
    @DatabaseField(columnName = "author")
    private String authorName;
}

public class B {
    @DatabaseField(generatedId = true, columnName = "id")
    private long id;
    @DatabaseField(columnName = "name")
    private String name;
    @ForeignCollectionField
    Collection<A> aees;
}

B 收藏了 A。我打电话给 dao.create(b);

现在我创建 b 的 dao,因为 b 拥有所有数据。但是表 B 只用数据创建,A 从未创建。有人可以帮忙吗?

【问题讨论】:

    标签: java android one-to-many ormlite


    【解决方案1】:

    我也面临同样的问题。我的 json 是这样的:

    {
       "parent":{
                "name":"ABC",
                "children":[
                              {"childName":"1"},
                              {"childName":"2"},
                              {"childName":"3"}
                           ]
                 }
    }
    

    我这样解决了这个问题:

    Parent parent = new Parent();
    parent.setName("ABC");
    
    while(get children one by one from json data)
    {
        childrenArray.add(new Child(its Name));
    }
    
    parentDAO.create(parent);
    
    for(Child child : childrenArray)
    {
        child.setParent(parent);
        childDAO.create(child);
    }
    

    【讨论】:

      【解决方案2】:

      现在我创建 b 的 dao,因为 b 拥有所有数据。但是表 B 只用数据创建,A 从未创建。有人可以帮忙吗?

      没错。您需要使用以下方法创建 A 项目:

      for (A a : b.aees) {
         aDao.create(a);
      }
      

      ORMLite 不会自动为您创建这些。

      你可以看看foreign-collection example program的源代码。

      【讨论】:

        【解决方案3】:

        你必须重写B类的DAO,所以当一个对象B被创建或更新时,集合中的对象也会被更新。

        看看这个问题:Collections in ORMLite

        【讨论】:

          猜你喜欢
          • 2013-08-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多