Android Room, может получить только 1 результат по запросу, но проверено и должно быть больше - PullRequest
0 голосов
/ 14 ноября 2018

Я проверил базу данных, должно быть 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. Если я смогу вернуть 1 результат, groupsId не проблема.Так почему же он возвращает только 1 результат?

  2. Я пытаюсь просто вернуть весь список участников независимо от 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;
}

enter image description here Я разместил его здесь, чтобы показать проверенные данные.

1 Ответ

0 голосов
/ 14 ноября 2018

добавить аннотации номеров:

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;

    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...