Grails Domain的关系

orm样式的Domain最终会在数据库表中体现出来,Domain类的从属关系会以数据库关联映射来体现。 一对多/多对一 --- __示例__: Class Country: [pk] +id +name Class Province: [pk] +id +name [fk]-> +country `Country`国家 可以拥有多个省份,就国家与省份来说,是__一对多__的关系 `Province`省份 只能属于一个国家,`country`标明它所属的国家,为外键,就省份与国家来说,是__多对一__的关系 __Grails Domain__: class Country { String name //一对多,hasMany,是一个字典集合 static hasMany = [province:Province] } class Province { String name //多对一,字典集合 static belongsTo = [country:Country] } 带码中两个domian互相说明了自己在一对多/多对一中的关系,这样在进行各种CRUD操作时,grails会帮我们进行级联操作 多对多 --- __示例__: Class City: [pk] +id +name Class Road: [pk] +id +name Class City-Road: [pk] +id [fk]-> +city [fk]-> +road `City` 城市可以有多个公路 `Road` 一条公路可以横穿多个城市 多对多关系中,一般会额外用一个表来记录映射关系 __Grails Domain__: class City { String name //多对多 static hasMany = [province:Province] } class Road { String name //多对多 static hasMany = [city:City] //belongsTo最重要的作用是绑定级联操作 //在这里,单独对road进行操作,不会影响到city //如果对road的属主city进行操作,势必会级联影响到road static belongsTo = [Country] //这里不是字典了,而是个列表,因为这样不会创建某个字段,只是将逐渐绑定 } 在多对多关系中,如果考虑了级联操作,最重要的是要定义好主从关系,即以哪个表为主 这样的代码,生成脚手架后,crud会自动级联的。

你可能感兴趣的:(grails)