我在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:
答案 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();