Как переопределить каскадное удаление для отношения в Grails GORM? - PullRequest
3 голосов
/ 09 ноября 2010

У меня проблемы с частью GORM в Grails. Я использую Grails 1.3.4 вместе с H2.

В базе данных у меня есть две таблицы template и report . На уровне GORM у меня есть два класса Домена Template и Report;

class Template {

static hasMany = [reports: Report]

...
}

и

class Report {

static belongsTo = [template: Template]

...
}

Поведение по умолчанию, по-видимому, заключается в том, что при удалении Template удаление будет каскадно, так что все Report, которые у него есть, также будут удалены. На уровне базы данных я пытался сделать столбец template_id в таблице report внешним ключом ON DELETE SET NULL , но это не сработало .

Есть ли способ переопределить каскадное удаление?

1 Ответ

7 голосов
/ 09 ноября 2010

В класс Template должно быть добавлено следующее:

static mapping = {
  reports cascade: 'none'
}

, чтобы можно было без проблем удалить Template s, необходимо также добавить это класс Report:

static constraints = {
  template(nullable: true)
}
...