Уведомить наблюдателей при выполнении пользовательского SQL-запроса ROOM - PullRequest
0 голосов
/ 27 октября 2019

Я пытался найти способ уведомить текущих активных наблюдателей, если данные в базе данных комнаты изменились. Все мои данные помещаются в объекты-наблюдатели LiveData, а затем к ним прикрепляется наблюдатель.

Это один из базовых Daos.

@Dao
public interface SubcategoryDao {

    @Insert(onConflict = OnConflictStrategy.REPLACE)
    void insertSubcategory(Subcategory... subcategories);

    @Query("SELECT * FROM subcategory_table")
    LiveData<List<Subcategory>> getAllSubcategories();

    @Query("SELECT * FROM subcategory_table WHERE category_id=:catId")
    LiveData<List<Subcategory>> getAllSubcategoriesForCategory(int catId);

    @Query("SELECT id FROM subcategory_table WHERE title=:title")
    LiveData<Integer> getSubcategoryIdByTitle(String title);

    @Query("SELECT * FROM subcategory_table WHERE title=:title")
    LiveData<Subcategory> getSubcategoryByTitle(String title);

}

Я получаю строковые запросы SQL с сервера, и затем единственный способ выполнить их в соответствии с документацией это:

AppDatabase.getInstance(activity)
                .getOpenHelper()
                .getWritableDatabase()
                .execSQL(sqlQuery);

Так как мне заставить его работать с наблюдателями? Как я могу уведомить или сделать недействительным их, чтобы перезагрузить интерфейс?

...