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"