Я проверил базу данных, должно быть 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 назад.Так что это происходит только тогда, когда я пытаюсь указать идентификатор группы.
Кто-нибудь знает, почему он так себя ведет?
PS Вот класс Member.
@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;
}
Я разместил его здесь, чтобы показать проверенные данные.