我正在我的Android应用程序中实现ActiveAndroid,因为我指的是这个链接 。 我的问题定义是,我在改装库的帮助下从服务器获取数据列表。 获取数据列表后,我将数据插入“ActiveAndroid”数据库。 在调试我的应用程序时,我检查过,外键和模型类的其他数据成员的数据是正确的 ...
提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
父亲
@Data
@Table(name = "SponsorServer")
public class SponsorServer extends Model {
@SerializedName("timestamp")
@Column(name = "Timestamp")
private String timestamp;
@SerializedName("sponsorsList")
@Column(name = "SponsorLists", onUpdate = Column.ForeignKeyAction.CASCADE, onDelete = Column.ForeignKeyAction.CASCADE)
public List<SponsorList> sponsorLists;
}
儿童
@Data
@Table(name = "SponsorList")
public class SponsorList extends Model {
@SerializedName("id")
@Column(name = "SponsorListID", unique = true, onUniqueConflict = Column.ConflictAction.REPLACE)
private int sponsorListID;
@SerializedName("order")
@Column(name = "SponsorListOrder")
private int order;
@SerializedName("name")
@Column(name = "Name")
private String name;
}
另一类
ActiveAndroid.beginTransaction();
try {
for (SponsorList sponsorList : sponsorServer.getSponsorLists()) {
for (Sponsor sponsor : sponsorList.getSponsors()) {
sponsor.save();
}
sponsorList.save();
}
sponsorServer.save();
ActiveAndroid.setTransactionSuccessful();
} finally {
ActiveAndroid.endTransaction();
SponsorServer sponsorServer1 = new Select().all().from(SponsorServer.class).executeSingle();
Log.d("", "-------- sponsorServer1 = " + sponsorServer1);
}
它的回归
SponsorServer1 = SponsorServer(时间戳= 1276605030,SponsorLists = null)
如何将孩子保存在父亲对象中?
关系如何在activeandroid上工作?
我不明白
https://github.com/pardom/ActiveAndroid/wiki/Creating-your-database-model
TKS
基于ActiveAndroid github和我的项目,这就是关系应该如何工作的:
@Table(name = "Sesje")
public class ChildEntity extends Model {
@Column(name = "FatherEntity", onDelete = ForeignKeyAction.CASCADE)
public FatherEntity fatherEntity;
}
@Table(name = "FatherEntity")
public class FatherEntity extends Model {
public List<ChildEntity> children(){
return getMany(ChildEntity.class, "FatherEntity");
}
}
与您附加的链接相关,您应该通过以下三个步骤来完成上述解决方案:
1.)在子级(SponsorList)中放置一列(及其设置器),该列将引用父级(SponsorServer)。
@Column(name = "SponsorServer")
public SponsorServer sponsorServer;
2.)保存SponsorLists时,告诉SponsorList项目是谁的父项,然后保存。
sponsor.sponsorServer = sponsorServer;
3.)将SponsorServer中的SponsorList设为私有,并编写getter方法以访问数据库中的相对SponsorList。
public List<SponsorList> getSponsorLists() {
if(sponsorLists == null){
sponsorLists = getMany(SponsorList.class, "SponsorServer");
}
return sponsorLists;
}
完成这些修改后,您可以使用getSponsorLists方法访问SponsorServer的SponsorLists。
完整的代码如下所示:
家长:
@Data
@Table(name = "SponsorServer")
public class SponsorServer extends Model {
@SerializedName("timestamp")
@Column(name = "Timestamp")
private String timestamp;
@SerializedName("sponsorsList")
private List<SponsorList> sponsorLists;
public List<SponsorList> getSponsorLists() {
if(sponsorLists == null){
sponsorLists = getMany(SponsorList.class, "SponsorServer");
}
return sponsorLists;
}
}
儿童:
@Data
@Table(name = "SponsorList")
public class SponsorList extends Model {
@SerializedName("id")
@Column(name = "SponsorListID", unique = true, onUniqueConflict = Column.ConflictAction.REPLACE)
private int sponsorListID;
@SerializedName("order")
@Column(name = "SponsorListOrder")
private int order;
@SerializedName("name")
@Column(name = "Name")
private String name;
@Column(name = "SponsorServer")
public SponsorServer sponsorServer;
}
保存的代码部分:
ActiveAndroid.beginTransaction();
try {
for (SponsorList sponsorList : sponsorServer.getSponsorLists()) {
for (Sponsor sponsor : sponsorList.getSponsors()) {
sponsor.sponsorServer = sponsorServer;
sponsor.save();
}
sponsorList.save();
}
sponsorServer.save();
ActiveAndroid.setTransactionSuccessful();
} finally {
ActiveAndroid.endTransaction();
SponsorServer sponsorServer1 = new Select().all().from(SponsorServer.class).executeSingle();
Log.d("", "-------- sponsorServer1 Lists= ");
for(SponsorList item : sponsorServer1.getSponsorLists()){
Log.d("", "" + item);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.