Имея следующий интерфейс и класс:
interface IUserCreated {
val userCreated: Boolean
}
@Entity
data class Test(
@PrimaryKey @ColumnInfo(name = "test_id") var id: Long,
@ColumnInfo(name = "user_created") override val userCreated: Boolean
) : IUserCreated
Это приводит к следующей ошибке:
error: Ambiguous getter for Field(element=userCreated, name=userCreated, type=boolean, affinity=INTEGER, collate=null, columnName=user_created, defaultValue=null, parent=null, indexed=false, nonNull=true).
All of the following match: getUserCreated, isUserCreated. You can @Ignore the ones that you don't want to match.
Вопрос
Как я могу использовать @Ignore
аннотация в этом примере? Логическое поле userCreated
является частью сущности, я просто хочу игнорировать неиспользуемое getUserCreated
и сообщить комнате, что оно должно использовать функцию получения по умолчанию kotlin isUserCreated
Примечание
Я знаю, что могу решить эту проблему следующим образом:
interface IUserCreated {
val internalUserCreated: Boolean
fun getUserCreated(): Boolean = internalUserCreated
}
@Entity
data class Test(
@PrimaryKey @ColumnInfo(name = "test_id") var id: Long,
@ColumnInfo(name = "user_created") override val internalUserCreated: Boolean
) : IUserCreated
Интересно, смогу ли я как-то решить это без обходного пути, я не хочу делать это для каждого логического значения поле в любой сущности, которую я использую, но я не знаю, как использовать аннотацию @Ignore
для решения проблемы.