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

Как сделать Первичный ключ Автоматическое увеличение при использовании Composite Primary keys в постоянной библиотеке Room?

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

@Entity(tableName = "newsPapers", primaryKeys = 
{"news_paper_id","news_paper_name"})
public class SelectNewsModel {

private int news_paper_id;

@ColumnInfo(name = "image_url")
private String imageUrl;

@ColumnInfo(name = "news_paper_name")
private String newsPaperName;
}

Я хочу, чтобы "news_paper_id" автоматически увеличивался. Как я могу это сделать?

4b9b3361

Ответ 1

Я нашел другой путь для этой проблемы, потому что, согласно моим знаниям после некоторого R & D, мы не можем иметь свойство автоматического прироста в составных первичных ключах. Поэтому я использовал индексы и уникальное ограничение здесь, потому что до сих пор у Room нет прямого УНИКАЛЬНОГО ограничения. Ниже приведен мой рабочий код:

@Entity(tableName = "newsPapers", indices = {@Index(value = 
       {"news_paper_name"}, unique = true)})
public class SelectNewsModel {

    @PrimaryKey(autoGenerate = true)
    private int news_paper_id;

    @ColumnInfo(name = "image_url")
    private String imageUrl;

    @ColumnInfo(name = "news_paper_name")
    private String newsPaperName;
}

Ответ 2

вы можете сделать добавление аннотации к PrimaryKey, как это.

@Entity(tableName = "newsPapers")
public class SelectNewsModel {

@PrimaryKey(autoGenerate = true)
private int news_paper_id;

@PrimaryKey
private String newsPaperName;

@ColumnInfo(name = "image_url")
private String imageUrl;


}

Ответ 3

вы можете использовать целочисленный тип для news_paper_id и, таким образом, установить news_paper_id

@Entity(tableName = "newsPapers", primaryKeys = 
{"news_paper_id","news_paper_name"})
public class SelectNewsModel {

 @PrimaryKey(autoGenerate = true)
private Integer news_paper_id;

@ColumnInfo(name = "image_url")
private String imageUrl;

@ColumnInfo(name = "news_paper_name")
private String newsPaperName;
}