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