4

Grails の GORM 部分に問題があります。H2と一緒にGrails 1.3.4を使用しています。

データベースには、 templatereportの 2 つのテーブルがあります。GORM レベルでは、2 つのドメイン クラスTemplateReport;があります。

class Template {

static hasMany = [reports: Report]

...
}

class Report {

static belongsTo = [template: Template]

...
}

デフォルトの動作は、 aTemplateが削除されると、削除がカスケードされ、Reportそれが持っているすべての s も削除されるようです。データベース レベルでは、レポートテーブルのtemplate_id列をON DELETE SET NULL外部キーにしようとしましたが、うまくいきませんでした。

カスケード削除をオーバーライドする方法はありますか?

4

1 に答える 1

7

Template以下をクラスに追加する必要があります。

static mapping = {
  reports cascade: 'none'
}

問題なく sを削除できるようにするには、クラスTemplateへのこの追加Reportも必要です。

static constraints = {
  template(nullable: true)
}
于 2010-11-09T07:51:11.577 に答える