惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

罗磊的独立博客
L
LangChain Blog
aimingoo的专栏
aimingoo的专栏
IT之家
IT之家
B
Blog
博客园_首页
博客园 - 司徒正美
有赞技术团队
有赞技术团队
博客园 - 聂微东
I
InfoQ
美团技术团队
GbyAI
GbyAI
阮一峰的网络日志
阮一峰的网络日志
H
Help Net Security
大猫的无限游戏
大猫的无限游戏
MyScale Blog
MyScale Blog
WordPress大学
WordPress大学
The GitHub Blog
The GitHub Blog
A
About on SuperTechFans
人人都是产品经理
人人都是产品经理
Microsoft Azure Blog
Microsoft Azure Blog
Engineering at Meta
Engineering at Meta
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
The Cloudflare Blog

博客园 - 页面载入出错

Grails指南摘要-403-生命周期 Grails指南摘要-402-logging Grails指南摘要-401-Controller中设置默认Action Grails指南摘要-307-测试领域类 Grails指南摘要-306-嵌入式对象 Grails指南摘要-305-扩展和继承 Grails指南摘要-303-自定义对象映射 Grails指南摘要-302-瞬时属性 Grails指南摘要-301-属性验证 20130527-jQuery in actin-看代码说事-ch01 20130518-Grails In Action-5、控制应用程序流(04小节) 20130518-Grails In Action-5、控制应用程序流(03小节) 20130517-Grails In Action-5、控制应用程序流(02小节) 20130517-Grails In Action-5、控制应用程序流(01小节) 20130517-Grails In Action-4、让模型工作(06小节) 20130516-Grails In Action-4、让模型工作(05小节) 20130516-Grails In Action-4、让模型工作(04小节) 20130516-Grails In Action-4、让模型工作(03小节) 20130516-Grails In Action-4、让模型工作(02小节)
Grails指南摘要-304-对象关系
页面载入出错 · 2013-06-04 · via 博客园 - 页面载入出错

one-to-one

class Car {
    Engine engine
}
class Engine {
    Car car
}

这两个关系没有所有者,可以说一辆汽车有一个引擎.也可以说一个引擎有一辆汽车,显然不太够,需要增加一个所有者的标示

class Car {
    Engine engine
}
class Engine {
    static belongsTo = [car:Car]
}

加入这个关系后告诉我们,一个引擎属于一辆汽车,还可以更明确的表示一台车只有一个引擎

class Car {
    static hasOne = [engine: Engine]
}

至于是哪个是哪个引擎,则在这里关联,这样,任何时候删除car的实例,和这个car实例有关联的engine都会被删除

class Engine {
    static belongsTo = Car 
}

 one-to-many

one-to-many关联关系和one-to-one很类似,只需要把hasOne修改成hasMany就完成了,如下

class Artist {
    String name
    static hasMany = [albums:Album]
}
class Album {
    String title
    static hasMany = [songs:Song]
    static belongsTo = [artist:Artist]
}
class Song {
    String title
    Integer duration
    static belongsTo = Album
}

static hasMany = [albums:Album]:一个artist(艺术家)有多张album(唱片)

static belongsTo = [artist:Artist]:当artist实例删除后,album也一并删除

static hasMany = [songs:Song]:一张album(唱片)收录了多首song(歌曲)

static belongsTo = Album:当album实例删除后,收录的song也一并删除

在这里如果根据album查找song时,找到的song list是无序的,可以增加一个排序达到直接搜索到有序的song list

class Album {
    String title
    static hasMany = [songs:Song]
    static belongsTo = [artist:Artist]
    SortedSet songs
}

一个对象可能会有多个one-to-many的关系存在,如

class Artist {
    String name
    static hasMany = [albums:Album, instruments:Instrument]
}

一个艺术家有多张唱片,也有多个乐器

自定义级联行为

class Album {
    String title
    static hasMany = [songs:Song]
    static belongsTo = [artist:Artist]
    static mapping = {
        songs cascade: 'delete'
    }
}

album和song级联删除,具体的细节可以参考hibernate文档