Hier lesen wie das GORM funktioniert: http://grails.org/doc/latest/guide/GORM.html
Many-to-one und one-to-one
Z.B. hat ein Gesicht immer nur eine Nase.
So sieht eine many-to-one Beziehuung aus:
class Face { Nose nose }
class Nose { static belongsTo = [face:Face] }
Um eine reine one-to-one Verküpfung zu machen nutzen wir hasOne
class Face { static hasOne = [nose:Nose] }
class Nose { Face face }
Bei solchen Beziehungen ist es sinnvoll eine unique Constraint zu setzten:
class Face { static hasOne = [nose:Nose] static constraints = { nose unique: true } }
class Nose { Face face }
One-to-many
Wenn wir nun einen Autor haben der mehrere Bücher geschrieben hat, brauchen wir eine one-to-many Beziehung:
class Book{ static hasMany = [author:Author]
}
class Author { String title }
Wenn nun ein Author gelöscht wird, werden gleichzeitig alle Buchinstanzen gelöscht die auf den zu löschenden Author zeigen.
Many-to-many
Bei many-to-many Beziehungen wird eine weitere Tabelle erstellt, welche die ID’s der beiden in Relation stehenden Tabellen speichert.
class Book {    static belongsTo = Author    static hasMany = [author:Author] }  class Author {    static hasMany = [book:Book]
In diesem Beispiel haben sowhl die Bücher mehrere Autoren sowie die Autoren mehrere Bücher. Löscht man nun aber einen Author, werden dessen Bücher auch gelöscht, da das belongsTo gesetzt ist.