Как получить конкретную сущность в комнате - PullRequest
0 голосов
/ 07 июля 2019

enter image description here

Итак, я использую базу данных Room для хранения курсов, и я застрял в методе, который возвращает курс с нужным именем (курсом), потому что он всегда возвращает нуль. Я уменьшил свою базу данных, чтобы иметь 2 курса с переменной курса как:

Как вы можете видеть на картинке выше, когда я пытаюсь получить CourseEnt в репозитории с course = fun, который, как я вижу ниже, он существует, он возвращает LiveData с нулевым значением вместо CourseEnt, который я хотел.

Есть идеи о том, что я делаю неправильно, или о том, что мне следует изучать с помощью отладчика?

Вот код:

Организация:

@Entity(tableName = "courses_table")
data class CoursesEnt (@PrimaryKey val course: String, 
                                   val location: String, 
                                   val description: String,                           
                                   val difficulty: Double, 
                                   val distance: Double, 
                                   val photos: ListInt, 
                                   val category: String, 
                                   val activities: ListString)//ListString is a type converter that converts a String into a List<String> and vice-versa

DAO:

@Dao
interface CoursesDao {

   @Query("SELECT * from courses_table ORDER BY course ASC")
    fun getAllCourses(): LiveData<List<CoursesEnt>>

   @Query("SELECT * FROM courses_table WHERE course LIKE :str")
    fun getCourse(str: String):LiveData<CoursesEnt>

   ...
}

Repository:

class CoursesRepository(private val coursesDao: CoursesDao){

    val allCourses: LiveData<List<CoursesEnt>> = coursesDao.getAllCourses()
    var singleCourse: LiveData<CoursesEnt> = coursesDao.getCourse("")

    @WorkerThread
    fun getCourse(str: String) {

        singleCourse = coursesDao.getCourse(str)
    }

    ...
}
...