我正试图坚持两种物体。家庭和亚科。一个家庭有一个或多个子家族。
我遇到的问题是我可以存储数据,但外部引用始终为NULL。
这些是创建正确数据库结构的类:
Family.java
@DatabaseTable
public class Family {
@DatabaseField(id = true)
private Integer id;
@DatabaseField
private String name;
@ForeignCollectionField(eager = true)
private ForeignCollection<Subfamily> subfamilies;
public Family() {}
// public getters and setters
}
Subfamily.java
@DatabaseTable
public class Subfamily {
@DatabaseField(id = true)
private Integer id;
@DatabaseField(foreign = true, foreignAutoRefresh = true)
private Family family;
@DatabaseField
private String name;
public Subfamily() {}
public Subfamily(String name, Family family) {
this.name = name;
this.family = family;
}
// public getters and setters
}
然后我将Daos分开,用于插入Family和Subfamily
public void insertFamily(Family family) {
try {
this.familyDao.create(family);
} catch (SQLException e) {
e.printStackTrace();
}
}
public void insertSubfamily(Subfamily subfamily) {
try {
this.subfamilyDao.create(subfamily);
} catch (SQLException e) {
e.printStackTrace();
}
}
然后当我像这样创建一个Family和Subfamily时,外部字段看起来总是NULL。我不知道我做错了什么..
Family f1 = new Family("FAMILY ONE");
mFamilyDao.insertFamily(f1);
Subfamily s1 = new Subfamily("SUBFAMILY OF FAMILY ONE", f1);
mSubfamilyDao.insertSubfamily(s1);
答案 0 :(得分:1)
然后当我像这样创建一个Family和Subfamily时,外部字段看起来总是NULL。我不知道我做错了什么..
api
确定。表面上的代码看起来很好,所以下面的列表更多的是尝试和调试提示然后解决方案。
api
吗?否则,您将需要自己设置Family f1 = new Family("FAMILY ONE");
familyDao.insertFamily(f1);
Subfamily s1 = new Subfamily("SUBFAMILY OF FAMILY ONE", f1);
subfamilyDao.insertSubfamily(s1);
字段的值。generatedId = true
'id字段不是id
吗?该字段集在哪里?您应该在f1
方法返回后记录null
的值,以确保该值为整数。f1.getId()
吗? insertFamily(...)
可以Integer
吗?我通常会将id
或null
用于我的ID字段。int
在做什么?你为什么不打电话给long
?希望这里有所帮助。哦,最后,如果可以的话,只要对匈牙利符号说 no 。在IDE上使用coloration来替换它。 : - )