So erstellen Sie eine Tabelle mit zwei oder mehr Fremdschlüssel mit Android-Zimmer?
Gemäß der entity-relationship-Modell, die Beziehung zwischen tbl_post
und tbl_category
angegeben werden kann, mit Zimmer Persistenz-Bibliothek wie folgt:
@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;
}
Jedoch TblPostCategory
hängt von zwei Fremdschlüssel: post_id
und category_id
aus TblPost
und TbCategory
.
Wie sollte die Beziehung beschrieben, über Raum Anmerkungen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
TblCategory.java
TblPost.java (Es fehlt die foreign-key-Referenz, aber es ist nicht wichtig für den Fall)
TblPostCategory.java
tbl_category
undtbl_post
Tabellen ohnetbl_post_category
. Und jede Kategorie hat eine Liste der Beiträge. Ich fügte hinzu, einen Fremdschlüssel zutbl_post
bezogen auf diecategory_id
. Aber ich kann immer noch nicht abrufenList<Post>
. Ich bekomme immer diese Fehlermeldung:android.database.sqlite.SQLiteConstraintException: FOREIGN KEY constraint failed (code 787)
many to many
Bezug(n:m)
. Lesen Sie diese: tomjewett.com/dbdesign/dbdesign.php?page=manymany.php. Dennoch, wenn Sie möchten, fügen Sie dieList<Post>
zutbl_category
Sie nicht brauchen, definieren Sie einen Fremdschlüssel intbl_post
. Sie müssen nur definierenConverters
für diePost
Objekt, da der Raum akzeptiert nur primitive Typen. Sehen: developer.android.com/training/data-storage/room/...select c.name from category c inner join post_category pc on c.id = pc.tbl_category_id where pc_tbl_post_id = 1 and pc_tbl_category_id=1