Подтвердить что ты не робот

Как сделать первичный ключ как автоинкремент для Room Persistence lib

Я создаю класс класса Entity (Room Persistence lib), в котором я хочу сделать 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 поле автоинкремента?

4b9b3361

Ответ 1

Вам нужно использовать свойство autoGenerate

Ваша первичная аннотация должна выглядеть следующим образом:

@PrimaryKey(autoGenerate = true)

Ссылка здесь

Ответ 2

Вы можете добавить @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()
}

Ответ 3

добавить @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));

Поставьте ноль для идентификатора при создании объекта (мой пользовательский объект case)

Если тип поля long или int (или его TypeConverter преобразует его в long или int), методы вставки обрабатывают 0 как неустановленные при вставке элемента.

Если тип поля - Integer или Long (Object) (или его TypeConverter преобразует его в Integer или Long), методы вставки обрабатывают ноль как неустановленные при вставке элемента.

Ответ 4

Например, если у вас есть объект 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.

Ответ 5

@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,
        "","","","")
}

Ответ 6

Используйте макет Horrizontal и веса для правильного размещения элементов на макете

                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginBottom="2dp"
                    android:background="@color/colorPrimary"
                    android:orientation="vertical"
                    android:padding="5dp">

                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal">

                        <TextView
                            android:id="@+id/item"
                            android:layout_width="0dp"
                            android:layout_height="match_parent"
                            android:layout_weight="9"
                            android:text="test test test testc test test test test test test test test test"
                            android:textStyle="bold" />

                        <TextView
                            android:layout_width="0dp"
                            android:layout_height="wrap_content"
                            android:layout_weight="1"
                            android:gravity="right"
                            android:text=":" />

                    </LinearLayout>

                    <TextView
                        android:id="@+id/markedAs"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginLeft="4dp"
                        android:text="answerval" />

                </LinearLayout>