web-dev-qa-db-ja.com

ルーム永続ライブラリで複合主キーを使用しているときに主キーを自動インクリメントする方法は?

ルーム永続ライブラリを使用しています。 1つのテーブルに2つのプライマリキーを追加する必要があり、プライマリキーの1つは自動インクリメントである必要があります。これを実現するための正確な構文はわかりません。以下は私の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」を自動インクリメントしたいです。どうすればできますか?

18

この問題を回避する別の方法を見つけました。R&D後の私の知識では、複合プライマリキーに自動インクリメントプロパティを設定できないためです。そのため、ここまでは部屋に直接UNIQUE制約がないため、ここではインデックスと一意の制約を使用しました。以下は私の作業コードです:

@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;
}
24