У меня есть объект, в котором одно из полей является MutableList. Я хочу вернуть все идентификаторы пользователей, которые содержат данный идентификатор в этом списке. Запрос всегда возвращает пустой список. Если я открою базу данных, я увижу, что поля хранятся правильно и есть идентификаторы пользователей, которые нужно вернуть. Что я делаю неправильно?
Класс данных:
@Entity
data class User(
@PrimaryKey
@SerializedName("id")
@ColumnInfo(name = "userId")
var userId: String,
@SerializedName("username")
var userName: String = "",
var city: String = "",
var postsIds: MutableList<String>
)
Дао:
@Dao
interface UserDao {
@Query("SELECT * FROM user WHERE postsIds LIKE :id")
fun getForPost(id: String): List<User>
// some other queries
}
Репозиторий:
fun getUsersForPost(id: String): LiveData<List<User>> {
val data = MutableLiveData<List<User>>()
GlobalScope.launch {
val query = async(Dispatchers.IO) { userDao.getForPost(id) }
val result = query.await()
if (result.isNullOrEmpty()) {
// todo fetch from the API
} else {
data.postValue(result)
}
}
return data
}
Использование:
ViewModel:
fun getPost(id: String): Post {
val post = repository.getPost(id)
_postEditors.value = repository.getUsersForPost(id).value
return post
}
Fragment:
viewModel.postEditors.observe(this, Observer {
Log.d(TAG, $it)
})