tags:

views:

201

answers:

1

I need a way to be able to have a domain class to have many of itself. In other words, there is a parent and child relationship. The table I'm working on has data and then a column called "parent_id". If any item has the parent_id set, it is a child of that element.

Is there any way in Grails to tell hasMany which field to look at for a reference?

+4  A: 

This is an example of what you are looking for (it's a snippet code I am running and it generates column parent_id). I don't think you need 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]
  }

Furthermore, you can give name to the hasMany clause using the Mapping DSL, which is explained at http://grails.org/GORM+-+Mapping+DSL

Jean Barmash
You should add a constraint:static constraints = { parent(nullable:true) }Otherwise, you won't be able to store the root since.
Stefan
Thank you......
intargc