Параметры метода запроса должны быть либо типом, который можно преобразовать в столбец базы данных, либо списком / массивом, который содержит такой тип - PullRequest
0 голосов
/ 21 декабря 2018

У меня есть БД с пользовательским типом данных FollowEntityType в качестве столбца.

@Entity(primaryKeys = arrayOf("id", "type"), tableName = "follow_info")
data class FollowInfoEntity(
        @ColumnInfo(name = "id") var id: String,
        @ColumnInfo(name = "type") var type: FollowEntityType,
)

Поскольку это пользовательский тип данных, я определил преобразователь типов.

class FollowDatabaseTypeConverter {

    @TypeConverter
    fun toFollowEntity(entityType: String?): FollowEntityType? {
        return FollowEntityType.from(entityType ?: Constants.EMPTY_STRING)
    }

    @TypeConverter
    fun toString(entityType: FollowEntityType?): String? {
        return entityType?.name
    }
}

Это отлично работает, и я могу сохранять / извлекать значения в БД.Однако в одном из запросов сборка завершается неудачно.

Это запрос.

@Query("select * from follow_info where type in (:entityTypeList))
fun getFollowedEntitiesByType(entityTypeList: List<FollowEntityType>) : List<FollowInfoEntity>

Сборка завершается неудачно со следующей ошибкой.

Query method parameters should either be a type that can be converted into a database column or a List / Array that contains such type. You can consider adding a Type Adapter for this.
    java.util.List<? extends FollowEntityType> entityTypeList, @org.jetbrains.annotations.NotNull()

ошибка для поля entityTypeList , и, согласно ошибке, этот тип должен быть одним из столбцов в БД.У меня уже есть FollowEntityType в качестве одного из типов столбцов.Я не понимаю, почему это терпит неудачу.Пожалуйста, помогите мне, поскольку я не нахожу никакого решения для решения этой проблемы.

1 Ответ

0 голосов
/ 15 января 2019

У меня была такая же проблема, и я сообщил об ошибке https://issuetracker.google.com/issues/122066791

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...