Ormlite外地字段在响应时给我null,有时候复制字段

时间:2016-05-20 12:47:44

标签: android ormlite

我在ormlite上加入表时遇到问题。在第一次加载时,我已经准备好使用retrofit和gson作为工具从api插入数据了。

这是我的pojos:

public class ParticipantDetailsModel {

@DatabaseField(id = true)
private int id;

@DatabaseField
private String first_name;

@DatabaseField
private String last_name;

}

public class Trainings implements Serializable {

@DatabaseField
private int participant_id;

@DatabaseField
private int batch_id;

@DatabaseField
private int graduation_program_id;

@DatabaseField
private int id;

@DatabaseField(foreign = true, foreignAutoRefresh = true, foreignAutoCreate = true)
private ParticipantDetailsModel participant;

}

在那个Pojo上我实际上得到了重复的字段ID,即“participant_id”。所以我所做的是将这个字段从私人ParticipantDetailsModel参与者重命名为私人ParticipantDetailsModel参与者,只为我获取数据。但是一旦我查询我没有得到任何值:

QueryBuilder<Trainings, String> qb1 = dao1.queryBuilder();
QueryBuilder<ParticipantDetailsModel, String> qb2 = dao2.queryBuilder();
qb1.where().eq("id", item.getId()).and().in("participant_id", parId);
List<Trainings> u = qb1.join(qb2).query();
你知道我遗失了什么吗?

继承我的db:

enter image description here

1 个答案:

答案 0 :(得分:0)

查看Ormlite文档

  

2.12外国对象字段

     

...

     

请注意,该字段的名称不是帐户,而是account_id。你会   如果要查询它,需要使用此字段名称。您可以使用设置列名称   DatabaseField批注中的columnName字段

设置columnName使用:

 public static final String ID_COLUMN = "ID";

 @DatabaseField(columnName = ID_COLUMN)
 private int                id;

要使查询有效,您还必须在Where上设置qb2子句。

qb1.where().eq("id", item.getId());
qb2.where().in("id", parId);
List<Trainings> u = qb1.join(qb2).query();