GORM中的关联

来源:互联网 发布:卡盟主站域名填什么 编辑:程序博客网 时间:2024/05/15 01:48

GORM中的关联

1.       One-to-one:使用 belongsTo 来设置

   class Face {
    Nose nose
}
class Nose {       
        static belongsTo = [face:Face]
}

 

2.     One-to-many:在Grails 中定义这样的关联可以使用 hasMany

   class Author {
    static hasMany = [ books : Book ]

    String name

}

class Book {

        String title

}

默认的级联行为是级联保存和更新,但不删除,除非 belongsTo 被指定:

class Author {
    static hasMany = [ books : Book ]

    String name

}

class Book {

        static belongsTo = [author:Author]

        String title

}

 

3.     Many-to-many:通过在关联双方定义 hasMany ,并在关联拥有方定义 belongsTo

 class Book {
   static belongsTo = Author
   static hasMany = [authors:Author]
   String title
}
class Author {
   static hasMany = [books:Book]
   String name
}

 

4.       集合类型基础

GORM 将使用一个链接表,来映射上面的关联。你可以使用joinTable参数来改变各式各样的连接表映射:

class Person {
    static hasMany = [nicknames:String]

    static mapping = {

       hasMany joinTable:[name:'bunch_o_nicknames', key:'person_id', column:'nickname', type:"text"]      

    }

}