CASCADE基于Android Rooms Orm中的@foreignkey删除



我有两个实体 DBList adnd DBListContent。与DBListDBListContent之间的一对多关系。

这是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;
}

最新更新