Итак, у меня есть база данных комнат, все настроено, все в порядке, поэтому я могу делать запросы и вставки, удалять и т. Д. Без проблем, однако я только что столкнулся с ситуацией, когда id хотел бы возвращать записи по их идентификаторам, а дубликаты должны быть разрешены , однако комната удаляет дубликаты, поэтому, например, я отправляю ему список идентификаторов, например ‹1,2,3,2,3>, и он возвращает элементы по их идентификаторам, но отправляет мне только‹ 1,2,3>, удаляя повторяющиеся записи. Запрос, который я делаю, ниже (кстати, полный нуб в sql)
@Query("SELECT * FROM card WHERE cardId IN(:cardId)")
LiveData<List<Card>> getCardsByIds(List<Integer> cardId);
Я использую его через репозиторий, который я создал (просто уровень абстракции) и вызывая это репо из ViewModel, эта ViewModel имеет изменяемый целочисленный список живых данных, содержащий идентификаторы, и с помощью 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));
и с помощью магии SwitchMap, когда список cardIds обновляется, создается новый запрос, и я наблюдаю ViewModel из моего фрагмента. Я отлаживал его, поэтому я знаю, что список идентификаторов правильный и содержит повторяющиеся идентификаторы, но в возвращенном списке LiveData отсутствуют повторяющиеся идентификаторы. любая помощь?
id
является первичным ключом таблицы базы данных? - person Abhimanyu   schedule 12.05.2019