web-dev-qa-db-fra.com

Comment créer une table avec deux ou plusieurs clés étrangères en utilisant Android Room?

enter image description here

Selon le modèle entité-relation , la relation entre tbl_post et tbl_category peut être spécifié à l'aide de Room Persistency Library comme suit:

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

Cependant TblPostCategory dépend de deux clés étrangères: post_id et category_id de TblPost et TbCategory.

Comment la relation doit-elle être décrite à l'aide d'annotations de salle?

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 (Il manque la référence de la clé étrangère mais ce n'est pas important pour le cas)

@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