Kotlin:Sugar ORM坚持@忽略' d属性

时间:2016-10-29 17:46:18

标签: android kotlin sugarorm

在我的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注释处理有关,但我不知道如何去做。任何建议都是最受欢迎的。

1 个答案:

答案 0 :(得分:3)

Java和Kotlin代码之间的核心区别在于,在Java中使用字段,但在Kotlin中使用属性。请参阅文档中的Properties and Fields部分。

您可以尝试以下解决方案,看看SugarORM的效果最佳:

1。让Kotlin公开字段:

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

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

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