Je crée une classe Food de Entity (Room Persistence lib), dans laquelle je veux faire foodId
comme auto-incrémentation.
@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()
}
Comment puis-je définir foodId
un champ auto-incrémenté?
Vous devez utiliser la propriété autoGenerate
Votre annotation de clé primaire devrait être comme ceci:
@PrimaryKey(autoGenerate = true)
Référence ici
Vous pouvez ajouter @PrimaryKey(autoGenerate = true)
comme ceci:
@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()
}
ajouter @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;
}
tout en stockant des données
db.userDao().InsertAll(new User(0,sName,sPhone));
Put zéro pour l'id lors de la création d'un objet (mon objet utilisateur de cas)
Si le type de champ est long ou int (ou si TypeConverter le convertit en long ou int), les méthodes d'insertion traitent 0 comme non défini lors de l'insertion de l'élément.
Si le type du champ est Integer ou Long (Object) (ou que TypeConverter le convertit en Integer ou en Long), les méthodes Insert traitent la valeur null comme non définie lors de l'insertion de l'élément.
Par exemple, si vous voulez stocker une entité users
, avec les champs (firstname, lastname , email)
et que vous voulez un identifiant généré automatiquement, vous procédez ainsi.
@Entity(tableName = "users")
data class Users(
@PrimaryKey(autoGenerated = true)
val id: Long,
val firstname: String,
val lastname: String,
val email: String
)
Room générera ensuite automatiquement et incrémentera automatiquement le champ id
.
@Entity(tableName = "user")
data class User(
@PrimaryKey(autoGenerate = true) var id: Int?,
var name: String,
var dob: String,
var address: String,
var gender: String
)
{
constructor():this(null,
"","","","")
}