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.