【发布时间】:2019-05-12 12:18:57
【问题描述】:
所以我已经设置了一个房间数据库,一切都很好,所以我可以进行查询和插入,删除等没有问题,但是我刚刚遇到了一种情况,id 喜欢通过他们的 ID 和重复项返回条目应该被允许,但是房间正在删除重复项,所以例如我向它发送一个 ID 列表说 并且它通过它们的 ID 返回项目但只向我发送 删除重复条目。我正在做的查询如下(顺便说一句,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。有什么帮助吗?
【问题讨论】:
-
id是数据库表的主键吗? -
是的,它是主键
标签: android viewmodel android-room android-livedata mutablelivedata