In my Grails domain I have a 1:1 relationship between Artist
and MusicianDetails
class Artist {
static hasOne = [musicianDetails: MusicianDetails]
static constraints = {
musicianDetails(nullable: true, unique: true)
}
}
class MusicianDetails {
static belongsTo = [artist: Artist]
}
私は関連する MusicianDetails
にカスケードする Artist
の削除を欲しいです。しかし、 Artist
を次のように削除すると、私は外部キー制約違反を取得します。
Artist.executeUpdate("delete Artist a where a.id = ?", [artistId])
エラーメッセージは次のとおりです。
Class
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException
Message
Cannot delete or update a parent row: a foreign key constraint fails
(`festival2`.`musician_details`, CONSTRAINT `FKA0E6B2145ACE528E`
FOREIGN KEY (`artist_id`) REFERENCES `artist` (`id`))
Artist
と MusicianDetails
との間に前者のカスケードを削除するような1:1の関係を定義する正しい方法は何ですか?