Могу ли я сделать поле непервичного ключа как автоматически сгенерированное значение в комнате

У меня есть таблица с составным первичным ключом. Могу ли я сделать один из файлов автоматически сгенерированным.

Сценарий: у меня есть teacher table, содержащий поля techerId, имя, пол, роль, отдел, класс, и он имеет составной первичный идентификатор, состоящий из роли, отдела и класса. Как сделать id учителя автоматически сгенерированным?


person Rakki s    schedule 13.02.2019    source источник
comment
проверьте здесь. stackoverflow.com/a/46804610/10511266   -  person Hussnain Haidar    schedule 13.02.2019
comment
@Rakki ты пробовал ответ?   -  person ankuranurag2    schedule 14.02.2019
comment
да я пробовал сработало   -  person Rakki s    schedule 15.02.2019


Ответы (1)


Если вы просмотрите ЭТОТ ОТВЕТ, вы обнаружите, что у нас не может быть свойства автоматического увеличения в составных первичных ключах. Таким образом, обходным путем будет использование концепции indexing и unique constraint. Сделайте столбцы role,deptt,grade такими, как вы indices, и установите ограничение unique как true. Это гарантирует, что пара этих трех значений всегда будет уникальной (например, primaryKey). Затем добавьте techerId как Primarykey(autoGenerate = true) в сущность. Ваш класс entity будет выглядеть примерно так:

@Entity(tableName = "teacher",indices = arrayOf(Index(value = ["role","department","grade"],unique = true)))
public class Teacher{
    @PrimaryKey(autoGenerate = true)
    int teacher_id;

    @ColumnInfo(name = "name")
    String teacher_name;

    //Rest of the fields
    ......
    ......
}
person ankuranurag2    schedule 14.02.2019