使用jackson解析并使用ormlite android将同一对象插入sqlite

使用jackson解析并使用ormlite android将同一对象插入sqlite,android,ormlite,foreign-collection,Android,Ormlite,Foreign Collection,我正在使用api调用中的Jackson解析json数据,并尝试使用ormlite将数据插入sqlite。为此,我使用相同的模型类。 这是我的模型课 public class Site { @DatabaseField(generatedId=true,columnName="ID") private int id; @DatabaseField(columnName="NAME") private String name; @ForeignCollectionField(eager=true)

我正在使用api调用中的Jackson解析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;
}



}
公共类站点{
@数据库字段(generatedId=true,columnName=“ID”)
私有int-id;
@数据库字段(columnName=“NAME”)
私有字符串名称;
@ForeignCollectionField(eager=true)
收集访问;
地点(){
}
公共int getId(){
返回id;
}
公共无效集合id(内部id){
this.id=id;
}
公共字符串getName(){
返回名称;
}
@JsonProperty(“名称”)
公共void集合名(字符串名){
this.name=名称;
}
公众收集及访问{
回访;
}
@JsonProperty(“访问”)
公众访问(收集访问){
这个.访问量=访问量;
}
}
这是参观示范班

@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;
}


}
@DatabaseTable(tableName=“VISIT”)
公开课堂参观{
@数据库字段(generatedId=true,columnName=“ID”)
私有int-id;
@数据库字段(columnName=“访问日期”)
私人约会访问日期;
@ForeignCollectionField(eager=false)
收集清单项目;
@数据库字段(foreign=true,foreignAutoRefresh=true,columnName=“foreign\u ID”)
私人地盘;
访问(){}
公共站点getSite(){
返回站点;
}
公共空隙设置位置(现场){
this.site=站点;
}
公开日期getVisitDate(){
回访日期;
}
@JsonProperty(“日期”)
公共无效设置访问日期(访问日期){
this.visitDate=visitDate;
}
公共集合getChecklistItems(){
返回清单项目;
}
@JsonProperty(“检查表项目”)
公共作废setChecklistItems(集合checklistItems){
this.checklistItems=checklistItems;
}
公共int getId(){
返回id;
}
公共无效集合id(内部id){
this.id=id;
}
}
我可以通过以下方式将json数据解析为站点对象列表:

List siteList=objectMapper.readValue(jp,newtypereference>(){})

这一切都很完美。现在,我想通过使用ormlite(使用Earge foreignCollection)将所有这些数据(站点对象列表)存储在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);
网站列表中每个网站的

Collection vTemp=site.getvisions();
Dao siteListDao=getHelper().getSiteListDao();
s、 访问量=siteListDao.getEmptyForeignCollection(“访问量”);
创建(站点);
对于(访问v:vTemp)
s、 增加(五);
它将数据插入站点和访问表。但当我试图通过站点表上的queryForAll()函数获取数据时,它返回一个foreignCollection对象(SITE.getvisions()),但其大小为0,尽管我已将eager设置为true


我想我插错了东西。请告诉我使用同一模型类对象进行插入的正确方法。

Hi。你找到答案了吗?我也有同样的问题。起来\同样的问题,你找到解决办法了吗?