所以我已经设置了一个房间数据库,一切都很好,所以我可以进行查询和插入,删除等没有问题,但是我刚刚遇到了一种情况,id 喜欢按他们的 ID 返回条目并且应该允许重复,但是房间正在删除重复项,因此例如,我向它发送了一个 ID 列表,例如 <1,2,3,2,3> 并且它通过它们的 ID 返回项目,但只向我发送 <1,2,3> 删除重复条目。我正在做的查询如下(顺便说一句,sql 的完整菜鸟)
@Query("SELECT * FROM card WHERE cardId IN(:cardId)")
LiveData<List<Card>> getCardsByIds(List<Integer> cardId);
我通过我创建的存储库(只是一个抽象级别)使用它并从 ViewModel 调用这个 repo,这个 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。有什么帮助吗?