gpt4 book ai didi

android - Android Rooms ORM中基于@ForeignKey的级联删除

转载 作者:IT王子 更新时间:2023-10-29 06:25:29 24 4
gpt4 key购买 nike

我有两个实体 DBListDBListContentDBListDBListContent 是一对多的关系。

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

关于android - Android Rooms ORM中基于@ForeignKey的级联删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46021529/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com