Android Room при удалении Каскад не работает - PullRequest
0 голосов
/ 16 декабря 2018

Я знаю, что есть много постов на эту тему, но все они имеют дело с SQLite ... (мое о Room).

У меня есть отношение «один ко многим» между таблицей «Карта» и таблицей «Палуба».Таким образом, у карты есть 1 колода, а в колоде много карт.Вставка и удаление в порядке для 1 строки, но я хотел бы удалить карты из колоды, когда эта будет удалена: при удалении каскадных отношений.

Мой код:

(Card.class)

@Entity(tableName = "cards")
public class Card{

    @PrimaryKey(autoGenerate = true)
    @ColumnInfo(name = "id")
    public int id;

    @ColumnInfo(name = "face1")
    public String face1;

    @ColumnInfo(name = "face2")
    public String face2;

    @ColumnInfo(name = "id_deck")
    @ForeignKey(entity = Deck.class, parentColumns = "id", childColumns = 
    "id_deck", onDelete = CASCADE)
    public int id_deck;
}

Deck.class:

@Entity(tableName = "decks")
public class Deck {

    @PrimaryKey(autoGenerate = true)
    @ColumnInfo(name = "id")
    public int id;

    @ColumnInfo(name = "nom")
    public String nom;

    public Deck(String nom){
        this.nom = nom;
    }

}

Я что-то не так сделал?Когда я снимаю колоду, карты все еще существуют.

1 Ответ

0 голосов
/ 16 декабря 2018

Вы должны определить свои внешние ключи в аннотации @Entity.

@Entity(tableName = "cards", foreignKeys = @ForeignKey(entity = Deck.class, parentColumns = "id", childColumns = "id_deck", onDelete = CASCADE))
...