ORMLite不创建外部引用

时间:2017-01-12 16:00:55

标签: android ormlite

我正试图坚持两种物体。家庭和亚科。一个家庭有一个或多个子家族。

我遇到的问题是我可以存储数据,但外部引用始终为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);

Foreign null

1 个答案:

答案 0 :(得分:1)

  

然后当我像这样创建一个Family和Subfamily时,外部字段看起来总是NULL。我不知道我做错了什么..

api

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

  • 您确定两个ID字段都不需要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吗?我通常会将idnull用于我的ID字段。
  • int在做什么?你为什么不打电话给long

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

相关问题