Saya membuat Makanan kelas Entity (Room Persistence lib), di mana saya ingin menjadikan foodId
sebagai peningkatan otomatis.
@Entity
class Food(var foodName: String, var foodDesc: String, var protein: Double, var carbs: Double, var fat: Double)
{
@PrimaryKey
var foodId: Int = 0
var calories: Double = 0.toDouble()
}
Bagaimana cara saya menyetel foodId
bidang peningkatan otomatis?
android
kotlin
android-room
chandil03
sumber
sumber
0.toDouble()
Anda dapat menggunakannya,0.0
nyatakan sebagai gandaJawaban:
Anda perlu menggunakan
autoGenerate
propertiAnotasi kunci utama Anda harus seperti ini:
Referensi untuk PrimaryKey .
sumber
@Entity( primaryKeys = arrayOf(COLUMN_ID_LOCAL,COLUMN_ID_REMOTE))
?Insert methods treat 0 as not-set while inserting the item.
Anda dapat menambahkan
@PrimaryKey(autoGenerate = true)
seperti ini:sumber
foodId
tidak perlu nol (tetapi bisa juga). Kita juga bisa menggunakan nilai default misalnya.var foodId: Int = 0
dan autogenerate akan bekerja dengan baik.int
ataulong
, 0 diperlakukan sebagai null-mampu, ketika jenisnya adalah Integer atau Long, null adalah nullable. Karena Kotlin Int ketika non-nullable bekerja di JVM sebagai primitive int, maka Anda benar danvar foodId: Int = 0
akan bekerja, tetapivar foodId: Int? = 0
tidak akan bekerja sejak Int? dikonversi dalam JVM sebagai Integer. @ JMK, jika Anda membuatnya 0, Anda HARUS membuat yang tidak dapat dibatalkanint
karena alasan tersebut.val jack = User(name = "Jack", phone= 1)
Dalam hal ini Anda dapat menghapus 0 dari konstruktorfoodId
dimasukkan ke dalam tubuh dan bukan di konstruktor?Menambahkan
@PrimaryKey(autoGenerate = true)
saat menyimpan data
tipe-2
Masukkan nol atau nol untuk id saat membuat objek (objek pengguna kasus saya)
Jika jenis bidangnya panjang atau int (atau TypeConverter mengubahnya menjadi panjang atau int), metode Insert memperlakukan 0 sebagai tidak disetel saat memasukkan item.
Jika tipe bidangnya adalah Integer atau Panjang (Objek) (atau TypeConverter yang mengubahnya menjadi Integer atau Panjang), metode Sisipkan memperlakukan null sebagai tidak disetel saat memasukkan item.
sumber
val jack = User(name = "Jack", phone= 1)
Dalam hal ini Anda dapat menghapus 0 dari konstruktorsumber
@PrimaryKey(autoGenerate = true)
" - apakah jawaban Anda menambahkan sesuatu yang baru di utas ini?Misalnya, jika Anda memiliki
users
entitas yang ingin Anda simpan, dengan bidang(firstname, lastname , email)
dan Anda ingin id yang dibuat otomatis, lakukan ini.Kamar kemudian akan membuat otomatis dan meningkatkan
id
bidang.sumber
@PrimaryKey(autoGenerated = true) val id: Long? = null
luar konstruktor, di badan kelasBeri anotasi kelas Entity Anda dengan kode di atas.
Di jawa
Di Kotlin
Room kemudian akan membuat otomatis dan meningkatkan bidang id.
sumber