How to make primary key as autoincrement for Room Persistence lib

前端 未结 8 1340
無奈伤痛
無奈伤痛 2020-12-07 11:55

I am creating an Entity (Room Persistence Library) class Food, where I want to make foodId as autoincrement.

@Entity
class Food(var foodName: Str         


        
8条回答
  •  借酒劲吻你
    2020-12-07 12:12

    add @PrimaryKey(autoGenerate = true)

    @Entity
    public class User {
    
        @PrimaryKey(autoGenerate = true)
        private int id;
    
        @ColumnInfo(name = "full_name")
        private String name;
    
        @ColumnInfo(name = "phone")
        private String phone;
    
        public User(){
        }
    
        //type-1
        public User(String name, String phone) {
            this.name = name;
            this.phone = phone;
        }
    
        //type-2
        public User(int id, String name, String phone) {
            this.id = id;
            this.name = name;
            this.phone = phone;
        }
    
    }
    

    while storing data

     //type-1
     db.userDao().InsertAll(new User(sName,sPhone)); 
    
     //type-2
     db.userDao().InsertAll(new User(0,sName,sPhone)); 
    

    type-1

    If you are not passing value for primary key, by default it will 0 or null.

    type-2

    Put null or zero for the id while creating object (my case user object)

    If the field type is long or int (or its TypeConverter converts it to a long or int), Insert methods treat 0 as not-set while inserting the item.

    If the field's type is Integer or Long (Object) (or its TypeConverter converts it to an Integer or a Long), Insert methods treat null as not-set while inserting the item.

提交回复
热议问题