У меня есть БД с пользовательским типом данных 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 в качестве одного из типов столбцов.Я не понимаю, почему это терпит неудачу.Пожалуйста, помогите мне, поскольку я не нахожу никакого решения для решения этой проблемы.