У меня проблема с комнатой.У меня есть Entity:
@Entity(tableName = "Entity")
data class Entity(val recipients: List<ID>?) {
@ColumnInfo(name = "id")
@PrimaryKey(autoGenerate = true) var id: Long = 0
}
Как вы можете видеть, он содержит список идентификаторов (typealias ID = Long). Итак, я сделал TypeConverter:
@TypeConverter
fun getListOfLongs(data: String?): List<ID> {
if (data == null) {
return Collections.emptyList()
}
val listType = object : TypeToken<List<Long>>() {}.type
return gson.fromJson(data, listType)
}
@TypeConverter
fun convertListToString(ids: List<ID>): String = gson.toJson(ids)
Но у меня проблемаЯ не могу сделать правильный запрос для этого списка:
@Query("select count(*) from Message where recipients in (:recipients)")
fun count(recipients: List<ID>?): Int
Как вы видите, мне нужно сравнить два списка (список в сущности и список из метода) и получить все сущности, которые содержат идентификаторы из списка метода, но этот запрос всегда возвращает 0. Я читал, что со списками TypeConverter могут быть проблемы, но я не могу найти никакого решения.