Я использую комнату и хочу синхронизировать LiveData с результатом запроса БД. Я делаю это:
dao
@Query("SELECT Pet.* FROM Pet WHERE user_Id = :userId " +
"UNION " +
"SELECT Pet.* FROM PetFeeders INNER JOIN Pet ON PetFeeders.pet_Id = Pet.pet_id " +
"WHERE PetFeeders.user_Id = :userId")
Flowable<List<Pet>> getAllUserPetsByUserId(Long userId);
хранилище
private LiveData<List<Pet>> userPets;
public void setUserPets(LiveData<List<Pet>> userPets) {
this.userPets = userPets;
}
@Override
public Flowable<List<Pet>> getAllUserPetsByUserId(Long userId) {
Log.d(TAG, "getAllUserPetsByUserId(" + userId + ")");
return petFoodingControlDatabase.getPetDao().getAllUserPetsByUserId(userId)
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread());
}
service
@Override
public void setUserPets(User user) {
pfcRepository.setUserPets(LiveDataReactiveStreams
.fromPublisher(pfcRepository.getAllUserPetsByUserId(user.getUserId())));
}
Запрос работает правильно, но LiveData никогда не передается. Что я делаю не так?