我有两个实体DBList和adnd DBListContentDBListDBListContent之间具有一对多的关系。

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

10-08 07:39
查看更多