Kotlin: @ Игнорирует свойства, сохраняемые Sugar ORM

В моем приложении для Android я использую Kotlin совместно с SugarORM, и я столкнулся с проблемой, пытаясь предотвратить сохранение некоторых свойств. Как ни странно, аннотация @com.orm.dsl.Ignore , по-видимому, игнорируется при использовании в классах Котлина.

В качестве примера,

1) давайте объявим две, казалось бы, идентичные модели:

 // JavaUser.java public class JavaUser extends SugarRecord { public String login = "login"; @Ignore public String password = "password"; } // KotlinUser.kt class KotlinUser : SugarRecord() { var login: String = "login" @Ignore var password: String = "password" } 

2) сохраняют свои инстанции

 JavaUser().save() KotlinUser().save() 

3) и взгляните на то, что на самом деле сохраняется:

 sqlite> select * from java_user; ID|LOGIN 1|login sqlite> select * from kotlin_user; ID|LOGIN|PASSWORD 1|login|password 

Я понимаю, что это может быть связано с обработкой аннотации Kotlin, но я просто не уверен, как я могу это сделать. Любые предложения приветствуются.

Основное различие между вашим кодом Java и Kotlin заключается в том, что в Java вы используете поля, но в Kotlin вы используете свойства. См. Раздел « Свойства и поля » в документации.

Вы можете попробовать следующие решения и посмотреть, что лучше всего работает с SugarORM:

1. Создайте поля для публикации Kotlin:

 @Ignore @JvmField var password: String = "password" 

2. Примените аннотацию к закрытому окну:

 @field:Ignore var password: String = "password"