web-dev-qa-db-ja.com

Android Roomを使用して2つ以上の外部キーを持つテーブルを作成する方法は?

enter image description here

エンティティ関係モデル によると、tbl_postおよびtbl_categoryRoom Persistency Library を使用して次のように指定できます。

@Entity(foreignKeys = @ForeignKey(
    entity = TblPost.class,
    parentColumns = "id",
    childColumns = "tbl_post_id")
)
class TblPostCategory {
    @PrimaryKey
    public String id;

    @ColumnInfo(name = "user_id")
    public String postId;
}

ただし、TblPostCategoryは2つの外部キーに依存します:post_idおよびcategory_idTblPostおよびTbCategoryから。

Roomアノテーションを使用して関係をどのように説明する必要がありますか?

10
JP Ventura

TblCategory.Java

@Entity
class TblCategory {
    @PrimaryKey
    @ColumnInfo(name="cat_id")
    public String id;

    @ColumnInfo(name = "cat_name")
    public String name;
}

TblPost.Java(外部キー参照がありませんが、ケースにとって重要ではありません)

@Entity
class TblPost {
    @PrimaryKey
    @ColumnInfo(name="post_id")
    public String id;

    public String title, content, create_time, author_id;
}

TblPostCategory.Java

@Entity(foreignKeys = {
    @ForeignKey(
        entity = TblPost.class,
        parentColumns = "post_id",
        childColumns = "tbl_post_id"
    ),
    @ForeignKey(
        entity = TblCategory.class,
        parentColumns = "cat_id",
        childColumns = "tbl_category_id"
    )
})
class TblPostCategory {
    @PrimaryKey
    @ColumnInfo(name="tbl_post_id")
    public String id;

    @ColumnInfo(name = "tbl_category_id")
    public String categoryId;
}
26
joao86