我检查了数据库,同一组应该有4个结果。我检查了插入操作,一切正常。
@Dao
public interface MemberDao {
@Query("Select * from `Member` where id=:groupsId")
List<Member> getMembers(int groupsId);
}
这是我检索数据的方法,
public List<Member> getMembers(final Group group){
LoadData d = new LoadData();
d.onComplete = this;
d.execute(group);
return null;
}
@Override
public void onOutput(List<Member> result) {
member = result;
for(Member m : member){
System.out.println(m.name);
}
}
public class LoadData extends AsyncTask<Group, Void, List<Member>> {
private OnTaskComplete onComplete =null;
@Override
protected List<Member> doInBackground(Group... groups) {
List<Member> result = memberDao.getMembers(groups[0].id);
return result;
}
@Override
protected void onPostExecute(List<Member> result){
onComplete.onOutput(result);
}
}
但是结果中只有1个,并且列表中应该有4个成员。
所以我的问题是:
如果我可以得到1个结果,则groupsId没问题。 那么为什么它只返回1个结果?
我尝试只返回成员的整个列表,而不管groupsId为何,我可以得到恰好4个。因此,仅当我尝试指定组ID时才会发生。
有人知道为什么会这样吗?
P.S。这是会员类。
@Entity(foreignKeys = @ForeignKey(parentColumns =
"id", childColumns = "groupsId", entity = Group.class))
public class Member {
@PrimaryKey(autoGenerate = true)
public int id;
public String name;
public long groupsId;
public Member(String name) {
this.name = name;
}
public void setGroupsId(long groupsId){
this.groupsId = groupsId;
}
public String getName(){
return name;
}
答案 0 :(得分:0)
添加房间注释:
public class Member {
@ColumnInfo(name = "user_id")
@PrimaryKey(autoGenerate = true)
private Long userId;
@ColumnInfo(name = "group_id")
private Long groupId;
@ColumnInfo(name = "username")
public String name;
...
}