部屋のデータベースがすべてセットアップされていて、すべて問題ないので、クエリや挿入、削除などを問題なく行うことができますが、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 がありません。助けはありますか?