Как автоматически увеличить первичный ключ в комнате? - PullRequest
0 голосов
/ 14 июля 2020
data class FavouriteEntity(
    @PrimaryKey(autoGenerate = true)
    val id : Int?,
    @ColumnInfo(name = "user_id") var userId : String,
    @ColumnInfo(name = "fav_restaurant_id") var favouriteRestaurantId : String,
    @ColumnInfo(name = "fav_restaurant_name") var favouriteRestaurantName : String,
    @ColumnInfo(name = "fav_restaurant_img") var favouriteRestaurantImage : String,
    @ColumnInfo(name = "fav_restaurant_price") var favouriteRestaurantPrice : String,
    @ColumnInfo(name = "fav_restaurant_rating") var favouriteRestaurantRating : String
)

Над классом находится мой класс Entity. Я хочу, чтобы первичный ключ увеличивался автоматически. Но когда я создаю объект класса, например:

var favouriteEntity = FavouriteEntity(

            userId,
            restaurant.restaurantId,
            restaurant.restaurantName,
            restaurant.restaurantImageUrl,
            restaurant.restaurantCostForOne,
            restaurant.restaurantRating
        )

, мне нужно передать целое число в качестве идентификатора. Но я хочу, чтобы идентификатор автоматически увеличивался. Пожалуйста, помогите.

Ответы [ 2 ]

0 голосов
/ 14 июля 2020

Вы можете просто:

data class FavouriteEntity(
    @PrimaryKey(autoGenerate = true)
    val id : Int = 0 
)

или

data class FavouriteEntity(
    @PrimaryKey(autoGenerate = true)
    val id : Int? = null 
)

, и поле id автоматически сгенерирует / автоматически увеличит значение поля id.

Затем используйте его с именованными параметрами: например,

data class FavouriteEntity(
        val id: Int = 0,
        val name: String
)

fun main() {
    FavouriteEntity(name = "name")
}
0 голосов
/ 14 июля 2020

Поскольку идентификатор будет автоматически сгенерирован, вы можете изменить свой код на:

@PrimaryKey(autoGenerate = true)
val id : Int = 0

Таким образом вы можете пропустить установку значения:

var favouriteEntity = FavouriteEntity(
            restaurant.restaurantId,
            restaurant.restaurantName,
            restaurant.restaurantImageUrl,
            restaurant.restaurantCostForOne,
            restaurant.restaurantRating
        )
...