2つのエンティティDBList
adnd DBListContent
があります。 DBList
とDBListContent
の間には1対多の関係があります。
これがDBList
クラスです
@Entity(tableName = "lists")
public class DBList {
@PrimaryKey
private String listId;
private String title;
private String createdDateTime;
}
これがDBListContent
です
@Entity(tableName = "listContents")
public class DBListContent {
@PrimaryKey
public String listContentId;
public String content;
public String lastEditedBy;
public String lastEditedDateTime;
@ForeignKey(entity = DBList.class, parentColumns = "listId", childColumns = "dbListId", onDelete = CASCADE)
public String dbListId;
}
lists
テーブルの行を削除しても、listContents
テーブルの対応する行は削除されません。
次のDaoメソッドを使用して行を削除しました
@Delete
void deleteLists(List<DBList> dbLists);
@Query("delete from lists")
void deleteLists();
私はかなり明白な何かが欠けていることを知っています。これで私を導いてください。
あなたの質問に答えるのに遅すぎるかどうかはわかりませんが、あなたが持っている間違いは、フィールドに@ForeignKey
を入力することです。
@ForeignKeys
はテーブル宣言に入れなければなりません。
コードは次のようになります。
@Entity(tableName = "listContents",foreignKeys ={
@ForeignKey(onDelete = CASCADE,entity = DBList.class,
parentColumns = "listId",childColumns = "dbListId")},
indices = {
@Index("dbListId"),
})
public class DBListContent {
@PrimaryKey
public String listContentId;
public String content;
public String lastEditedBy;
public String lastEditedDateTime;
public String dbListId;
}