私はそれのように見えるAndroid Roomのエンティティを得ました。これまでのところ、心配はありません。Kotlinのデータクラス、Androidルームとカスタムセッター
3210パスワードを暗号化する必要があります。 Javaでは、これは単にセッターで行われ、それはうまくいくでしょう。
あなたはKotlinでそれをどうしますか?私はAndroid Room、カスタムセッター、データクラスを組み合わせるソリューションを見つけることができません。
私はそれのように見えるAndroid Roomのエンティティを得ました。これまでのところ、心配はありません。Kotlinのデータクラス、Androidルームとカスタムセッター
3210パスワードを暗号化する必要があります。 Javaでは、これは単にセッターで行われ、それはうまくいくでしょう。
あなたはKotlinでそれをどうしますか?私はAndroid Room、カスタムセッター、データクラスを組み合わせるソリューションを見つけることができません。
パスワードを設定するたびにカスタムセッターが作成されるため、セッター内でもパスワードを暗号化できます。
あなたはこのような何か試すことができます。
@Entity(tableName = "users",
indices = arrayOf(Index(value = "nickName", unique = true)))
data class User(@ColumnInfo(name = "nickName") var nickName: String,
private var _password: String) {
@ColumnInfo(name = "id")
@PrimaryKey(autoGenerate = true)
var id: Long = 0
@ColumnInfo(name = "password")
var password: String = _password
set(value) {
field = "encrypted"
}
override fun toString(): String {
return "User(id=$id, nickName='$nickName', password='$password')"
}
}
をしかし、私はそれがその責任ではないとして、エンティティ内のパスワードを暗号化するか、何とかそれを修正することはお勧めしませんし、あなたのパスワードの二重暗号とエラーに直面する可能性データベースからエンティティを取得するときと同様に、Roomはエンティティにデータを入力します。これにより、すでに暗号化されたデータが暗号化されます。
なぜ値の設定を上書きできないのですか? – tyczj
あなたの質問は不明です。 「Javaでは、これは単に設定者を使って行うことができ、それはうまくいく」 Kotlinの変更可能なプロパティに何が問題になっていますか? – Egor
@Egorデータクラスではどうしますか?私的な '_password'フィールドを経由しますか?その場合、@ColumnInfoのどこにワイヤを張っていますか? –