Как я могу установить autoGenerate в списке primaryKeys @Entity? - PullRequest
0 голосов
/ 19 октября 2018

Я новичок в библиотеке Android Room.Я хочу создать таблицу с двумя первичными ключами.Я также хочу установить autoGenerate для этих двух первичных ключей, но я не знаю, как это сделать.Детали кода показаны ниже:

@Entity(primaryKeys = {"userId", "planName"},
    foreignKeys = @ForeignKey(entity = User.class,
    parentColumns = "id",
    childColumns = "userId",
    onDelete = CASCADE))
public class Plan {

    public int userId;

    @NonNull
    public String planName;
}

Большое спасибо!

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

Добро пожаловать в Stackoverflow.

Технически у вас не может быть 2 первичных ключей.По определению это единственный индекс, который имеет ограничение UNIQUE.Хотя это может быть применено к 2 столбцам одновременно.Это означает, что комбинация этих двух столбцов должна быть уникальной, но каждый из них может содержать повторяющиеся значения.

А что касается autoGenerate, первичный ключ может быть сгенерирован автоматически, только если он имеет тип integer и один столбец.Вы не можете иметь составной первичный ключ, который будет сгенерирован автоматически.

0 голосов
/ 19 октября 2018

Как правило, первичный ключ должен представлять собой один столбец, который уникально идентифицирует каждую строку.Если вы хотите также гарантировать уникальность пары (userId, planName), вам просто нужно добавить ограничение UNIQUE.Кроме того, вы можете добавить индекс для пары столбцов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...