0

部屋のデータベースがすべてセットアップされていて、すべて問題ないので、クエリや挿入、削除などを問題なく行うことができますが、ID が ID でエントリを返したいという状況に遭遇し、重複を許可する必要があります、ただし、部屋は重複を削除しているため、たとえば、<1,2,3,2,3>というIDのリストを送信すると、IDでアイテムが返されますが、<1,2,3>のみが送信され、重複するエントリ。私が作成しているクエリは以下のとおりです(ところで、sqlで完全なnoob)

@Query("SELECT * FROM card WHERE cardId IN(:cardId)")
LiveData<List<Card>> getCardsByIds(List<Integer> cardId);

私が作成したリポジトリ(単なる抽象化のレベル)を介して使用し、ViewModel からこのリポジトリを呼び出すと、この ViewModel には ID を含む変更可能なライブ データ整数リストがあり、SwitchMap を使用して最新のライブ データを取得します。以下の関連部分を含めないでください

CARD REPO は私の Daos メソッドを次のように呼び出します

public LiveData<List<Card>> getCardsByIds(List<Integer> cardIds){
    return cardDao.getCardsByIds(cardIds);
}

それらの ViewModel 呼び出し

private MutableLiveData<List<Integer>> cardIds;
//** constructor etc
cards = Transformations.switchMap(cardIds, id -> cardRepository.getCardsByIds(id));

そして、cardIds リストが更新されたときに SwitchMap の魔法によって新しいクエリが作成され、フラグメントから ViewModel を観察します。私はそれをデバッグしたので、ID のリストが正しく、ID が重複していることはわかっていますが、返された LiveData リストには重複した ID がありません。助けはありますか?

4

1 に答える 1