ActiveAndroid отношения один-ко-многим с Каскадом - PullRequest
0 голосов
/ 07 июля 2019

Я немного озадачен тем, как создать Model с ActiveAndroid, чтобы иметь две таблицы, связанные с Cascade условие onDelete, и не смог найти ни одного хорошего / понятного примера для изучения.поэтому у меня есть эта таблица:

    @Table(name = "CheckList")
    public class CheckList {

    @Column(name = "Title")
    String Title;
    @Column(name = "After")
    Integer After;
    @Column(name = "Before")
    Integer Before;

    @Column(name = "Enabled")
    Boolean Enabled;

    @Column(name = "Info")
    String Info;
}

, и мне нужно иметь ее список в этой таблице:

@Table(name = "Equipment")
public class Equipment {

    @Column(name = "Title")
    String Title;

    @Column(name = "Checklists")
    List<CheckList> Checklists;

}

также у меня может быть другая таблица со списком Equipment в неми мне нужно связать их, как описано выше.

я хочу, чтобы при удалении записи из Equipment мне нужно было удалить все записи в List<CheckList> Checklists;, относящиеся к этому Equipmentтакже.я знаю, что могу сделать запрос и так далее, но мне нужно знать, есть ли лучший и правильный способ сделать это?

Пожалуйста, объясните подробно (как создать связь и запрос позже) ипоказать пример, связанный с моими таблицами.

1 Ответ

0 голосов
/ 07 июля 2019

Вам необходимо настроить таблицы с каскадным отношением внешнего ключа.

@Table(name = "Equipment")
public class Equipment {

    @Column(name = "Title")
    String Title;

    // This method is optional & does not affect the foreign key creation.
    public List<CheckList> items() {
        return getMany(CheckList.class, "Equipment");
    }
}

@Table(name = "CheckList")
public class CheckList {

    @Column(name = "Title")
    String Title;

    @Column(name = "After")
    Integer After;

    @Column(name = "Before")
    Integer Before;

    @Column(name = "Enabled")
    Boolean Enabled;

    @Column(name = "Info")
    String Info;

    //This establishes a relationship between Checklist and Equipment, Any update or delete operations done on Equipment table gets cascaded to the corresponding rows in the Checklist table.
    @Column(name = "Equipment", onUpdate = ForeignKeyAction.CASCADE, onDelete = ForeignKeyAction.CASCADE)
    Equipment equipment;

}

Справочные материалы:

  1. Справочная статья
  2. Возможные значения для ForeignKeyAction
  3. Официальные документы с основами по настройке отношений и моделей
  4. Закрытый выпуск, подтверждающий, что CASCADE DELETE работает
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...