Kotlin:@Ignore' 由 Sugar ORM 保留的属性

Kotlin: @Ignore'd properties persisted by Sugar ORM

在我的 Android 应用程序中,我将 Kotlin 与 SugarORM 结合使用,但我遇到了一个问题,试图阻止某些属性被持久化。具有讽刺意味的是,@com.orm.dsl.Ignore 注释在 Kotlin 类.

中使用时似乎被忽略了

例如,

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 中您使用属性。请参阅文档中的 Properties and Fields 部分。

您可以尝试以下解决方案,看看哪种解决方案最适合 SugarORM:

1。让 Kotlin 公开字段:

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

2。将您的注释应用于私有支持字段:

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