ORMLite Android中的一对多关系

时间:2013-07-03 07:04:25

标签: java android one-to-many ormlite

如何在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永远不会创建。请帮助一些人?

3 个答案:

答案 0 :(得分:14)

  

现在我创建了b的dao,因为b包含所有数据。但表B仅使用数据创建,A永远不会创建。请帮助一些人?

右。您需要使用以下内容创建A项目

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

ORMLite不会自动为您创建。

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

答案 1 :(得分:0)

您必须覆盖B类的DAO,因此在创建或更新对象B时,集合中的对象也会更新。

看一下这个问题:Collections in ORMLite

答案 2 :(得分:-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);
}