raw*_*064 7 android ormlite foreign-collection
我正在使用Jackson从api调用解析json数据并尝试使用ormlite在sqlite中插入数据.为此,我使用相同的模型类.这是我的模型类
public class Site {
@DatabaseField(generatedId=true,columnName="ID")
private int id;
@DatabaseField(columnName="NAME")
private String name;
@ForeignCollectionField(eager=true)
Collection<Visit> visits;
Site() {
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
@JsonProperty("name")
public void setName(String name) {
this.name = name;
}
public Collection<Visit> getVisits() {
return visits;
}
@JsonProperty("visits")
public void setVisits(Collection<Visit> visits) {
this.visits = visits;
}
}
Run Code Online (Sandbox Code Playgroud)
这是访问模型类
@DatabaseTable(tableName = "VISIT")
public class Visit {
@DatabaseField(generatedId=true,columnName="ID")
private int id;
@DatabaseField(columnName="VISIT_DATE")
private Date visitDate;
@ForeignCollectionField(eager=false)
Collection<CheckListItem> checklistItems;
@DatabaseField(foreign=true,foreignAutoRefresh=true,columnName="FOREIGN_ID")
private Site site;
Visit(){}
public Site getSite() {
return site;
}
public void setSite(Site site) {
this.site = site;
}
public Date getVisitDate() {
return visitDate;
}
@JsonProperty("date")
public void setVisitDate(Date visitDate) {
this.visitDate = visitDate;
}
public Collection<CheckListItem> getChecklistItems() {
return checklistItems;
}
@JsonProperty("checklist_items")
public void setChecklistItems(Collection<CheckListItem> checklistItems) {
this.checklistItems = checklistItems;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
Run Code Online (Sandbox Code Playgroud)
我可以通过以下方式将json数据解析为站点对象列表:
列表siteList = objectMapper.readValue(jp,new TypeReference>(){});
这非常有效.现在我想通过使用ormlite(使用eager foreignCollection)将所有这些数据(Site对象列表)存储在db中.为此,我尝试这样:
for each site in siteList
Collection<Visit> vTemp=site.getVisits();
Dao<Site, Integer> siteListDao=getHelper().getSiteListDao();
s.visits=siteListDao.getEmptyForeignCollection("visits");
siteListDao.create(site);
for(Visit v:vTemp)
s.contacts.add(v);
Run Code Online (Sandbox Code Playgroud)
它将数据插入SITE和VISIT表.当我尝试通过SITE表上的queryForAll()函数获取数据时,它会返回一个foreignCollection对象(site.getVisits())但是它的大小为0,尽管我已经设置了eager = true.
我觉得插入时我做错了.请告诉我使用相同的模型类对象进行此插入的正确方法是什么.
| 归档时间: |
|
| 查看次数: |
1145 次 |
| 最近记录: |