Kotlin:Sugar ORM坚持了@忽略属性

在我的Android应用程序中,我正在使用Kotlin和SugarORM,并且遇到了一个问题,试图阻止某些属性被持久化。 具有讽刺意味的是,在Kotlin类中使用@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"