gpt4 book ai didi

android - ORMLite 没有创建外部引用

转载 作者:行者123 更新时间:2023-11-30 00:47:07 27 4
gpt4 key购买 nike

我正在尝试持久化两种对象。家族和亚家族。一个家族有一个或多个亚家族。

我遇到的问题是我可以存储数据,但外部引用始终为 NULL。

这些是创建正确数据库结构的类:

家庭.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
}

亚科.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);

Foreign null

最佳答案

Then when I create a Family and Subfamily like this, the foreign field looks always NULL. I Don't know what I'm doing wrong..

Family f1 = new Family("FAMILY ONE");
familyDao.insertFamily(f1);
Subfamily s1 = new Subfamily("SUBFAMILY OF FAMILY ONE", f1);
subfamilyDao.insertSubfamily(s1);

好的。这段代码表面上看起来不错,所以下面的列表是更多的尝试和调试提示,然后是解决方案。

  • 您确定不希望两个 ID 字段都使用 generatedId = true 吗?否则,您将需要自己设置 id 字段的值。
  • 您确定 f1 的 id 字段也不是 null 吗?该字段设置在哪里?您应该在 insertFamily(...) 方法返回后记录 f1.getId() 的值,以确保该值为整数。
  • 您真的希望该字段是一个 Integer 吗? id 是否可以为 null?我通常使用 intlong 作为我的 ID 字段。
  • insertFamily(...) 在做什么?你为什么不直接调用 dao.create(...)

希望这里有所帮助。哦,最后,如果可以的话,请对匈牙利符号说。在您的 IDE 上使用着色来替换它。 :-)

关于android - ORMLite 没有创建外部引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41617723/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com