Как сделать первичный ключ в качестве автоинкремента для сохранения комнаты lib
Я создаю Entity (Room Persistence lib) class Food, где я хочу сделать foodId
как автоувеличение.
@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()
}
как я могу установить foodId
поле autoincrement?
4 ответа:
вы должны использовать
autoGenerate
свойстваваша аннотация первичного ключа должна быть такой:
@PrimaryKey(autoGenerate = true)
ссылка здесь
Вы можете добавить
@PrimaryKey(autoGenerate = true)
такой:@Entity data class Food( var foodName: String, var foodDesc: String, var protein: Double, var carbs: Double, var fat: Double ){ @PrimaryKey(autoGenerate = true) var foodId: Int = 0 // or foodId: Int? = null var calories: Double = 0.toDouble() }
добавить
@PrimaryKey(autoGenerate = true)
@Entity public class User { public User(int id, String name, String phone) { this.id = id; this.name = name; this.phone = phone; } @PrimaryKey(autoGenerate = true) private int id; @ColumnInfo(name = "full_name") private String name; @ColumnInfo(name = "phone") private String phone; }
в то время как хранение данных
db.userDao().InsertAll(new User(0,sName,sPhone));
поставить ноль для id при создании объекта (мой случай объекта пользователя)
Если тип поля long или int (или его TypeConverter преобразует его в long или int), методы Insert обрабатывают 0 как не-set при вставке элемента.
Если поле имеет тип Integer или Long (Object) (или его TypeConverter преобразует его в целое число или Long), методы Insert обрабатывают null как не-установить при вставке элемента.
например, если у вас есть
users
сущность, которую вы хотите сохранить, с полями(firstname, lastname , email)
и вы хотите, чтобы код автоматически, Вы делаете это.@Entity(tableName = "users") data class Users( @PrimaryKey(autoGenerated = true) val id: Long, val firstname: String, val lastname: String, val email: String )
номер будет автоматически генерировать и автоматически увеличивать
id
поле.