2009-11-24 5 views
4

J'ai besoin d'un moyen de pouvoir avoir une classe de domaine pour avoir beaucoup de lui-même. En d'autres termes, il existe une relation parent-enfant. La table sur laquelle je travaille contient des données puis une colonne appelée "parent_id". Si un élément a le parent_id défini, il s'agit d'un enfant de cet élément.Grails domaine classe relation à lui-même

Existe-t-il un moyen quelconque dans Grails de dire à quel champ de référence recherchez-vous une référence?

Répondre

6

Ceci est un exemple de ce que vous cherchez (c'est un code que j'exécute et il génère une colonne parent_id). Je ne pense pas que vous avez besoin SortedSet:

class NavMenu implements Comparable { 
    String category 
    int rank = 0 

    String title 
    Boolean active = false 

    //NavMenu parent 
    SortedSet subItems 
    static hasMany = [subItems: NavMenu] 
    static belongsTo = [parent: NavMenu] 
    } 

De plus, vous pouvez donner le nom à la clause hasMany utilisant le DSL Mapping, qui est expliqué à http://grails.org/GORM+-+Mapping+DSL

+3

Vous devez ajouter une contrainte: contraintes statiques = { parent (nullable: true)} Sinon, vous ne pourrez plus stocker la racine depuis. –