10

如何在 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 从未创建。有人可以帮忙吗?

4

3 回答 3

15

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

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

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

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

你可以看看foreign-collection示例程序的源代码。

于 2013-07-16T14:16:55.223 回答
0

您必须重写 B 类的 DAO,因此当创建或更新对象 B 时,集合中的对象也将被更新。

看看这个问题:ORMLite 中的集合

于 2013-07-03T07:20:57.357 回答
-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);
}
于 2014-06-23T13:04:11.893 回答