2017-09-03 16 views
3

我有兩個實體DBListDBListContent。具有DBListDBListContent之間的一對多關係。基於Android Rooms中的@ForeignKey級聯刪除ORM

這裏是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(); 

我知道我失去了一些東西很明顯刪除的行。請在這裏指導我。

回答

0

我不知道現在回答你的問題爲時已晚,但是你的錯誤是將@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; 
}