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

推荐订阅源

T
Threat Research - Cisco Blogs
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
V
Vulnerabilities – Threatpost
GbyAI
GbyAI
P
Proofpoint News Feed
L
LINUX DO - 热门话题
P
Palo Alto Networks Blog
A
About on SuperTechFans
T
Tenable Blog
M
MIT News - Artificial intelligence
IT之家
IT之家
I
Intezer
D
DataBreaches.Net
爱范儿
爱范儿
T
Threatpost
C
CERT Recently Published Vulnerability Notes
云风的 BLOG
云风的 BLOG
博客园 - 三生石上(FineUI控件)
WordPress大学
WordPress大学
K
Kaspersky official blog
大猫的无限游戏
大猫的无限游戏
A
Arctic Wolf
Y
Y Combinator Blog
Cyberwarzone
Cyberwarzone
酷 壳 – CoolShell
酷 壳 – CoolShell
D
Darknet – Hacking Tools, Hacker News & Cyber Security
H
Help Net Security
Microsoft Security Blog
Microsoft Security Blog
Spread Privacy
Spread Privacy
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
AWS News Blog
AWS News Blog
博客园 - 聂微东
C
Check Point Blog
S
Securelist
有赞技术团队
有赞技术团队
雷峰网
雷峰网
aimingoo的专栏
aimingoo的专栏
Last Week in AI
Last Week in AI
Stack Overflow Blog
Stack Overflow Blog
MongoDB | Blog
MongoDB | Blog
D
Docker
G
GRAHAM CLULEY
T
The Exploit Database - CXSecurity.com
C
Cybersecurity and Infrastructure Security Agency CISA
T
Tailwind CSS Blog
L
Lohrmann on Cybersecurity
G
Google Developers Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
L
LangChain 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文档