一对一关联关系开发中用的没有一对多那么广泛。可是我认为掌握以下还是有必要的。一对一关联关系有一张表存在外键,引用的通常是主表的主键。grails也对一对一关联关系提供了非常好的支持。配置也是简单的不得了。grails配置一对一能够有以下三种选择:

class Face {
Nose nose
}
class Nose {
}

这样的属于单向关联。以下的这样的则是双向关联。可是不能级联更新

class Face {
Nose nose
}
class Nose {
Face face
}

接下来这样的我认为比較好用。能够级联保存和更新

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

那假设使用了单向关联又要使用级联保存和更新。推荐使用以下这样的

class Face {
Nose nose
}
class Nose {
static belongsTo = Face
}

以下就是我的样例了。我使用的是第三种,这样的情况是双向关联还能够级联保存和更新

1.创建领域对象

class PersonInfo {
Integer id;
String name;
CardInfo card;
static mapping = {
table 'm_person'
card column: 'cardId'
}
}
class CardInfo {
Integer id;
String birthday;
static belongsTo = [person:PersonInfo]
static mapping = {
table 'm_card'
}
}

person就是主表了,card是从表。这点和hibernate有些许差异

2.通过控制器级联保存person和card

  @Transactional
def savePersonAndCard(){
def p=new PersonInfo()
p.setName("caiyil") def c=new CardInfo()
c.setBirthday("2008-01-03") p.setCard(c)
p.save() render "数据保存成功"
}

以下我还写了个方法,通过这种方法能够取得person的birthday

 //通过person查询birthday
def queryPersonBirthday(){
def personId=params.id
def p=PersonInfo.get(personId)
render p.getCard().getBirthday()
}

对于多对多这样的情况,grails也是支持的可是要记住的是多对多须要有一方维护关联关系,这一点能够參考grails开发文档

grails一对一关联关系的更多相关文章

  1. Hibernate(5)—— 联合主键 、一对一关联关系映射(xml和注解) 和 领域驱动设计

    俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习!涉及的知识点总结如下: One to One 映射关系 一对一单向外键(XML/Annotation) 一对一双向外键关联(XML/A ...

  2. Hibernate映射一对一关联关系

    映射一对一关联 Hibernate提供了两种映射一对一关联关系的方式,分别是按照外键映射和按照主键映射. 下面是员工表和档案信息表(员工和档案表之间的关系是一对一的关系)  档案表(dept) pub ...

  3. 一对一关联关系基于主键映射的异常 IdentifierGenerationException

    具体异常:org.hibernate.id.IdentifierGenerationException: attempted to assign id from null one-to-one pro ...

  4. Hibernate关联关系映射之一对一关联关系

    人和身份证之间就是一个典型的一对一关联关系.实现一对一关联关系映射的方式有两种一种是基于外键,一种是基于主键,下面我们先看基于外键的关联方式 首先看他们的实体类 Person类 ? 1 2 3 4 5 ...

  5. Hibernate 一对一关联关系

    双向一对一关联关系: 域模型: 例如,部门只有一个部门经理,一个经理也只能管理一个部门.即,Department 中有一个Manager的引用,Manager 中又有一个Department 的引用. ...

  6. mybatis一对一关联关系映射

    mybatis一对一关联关系映射 在关联关系中,有一对一,一对多,多对多三种关联关系. 一对一关系:在操作上,任意一方引入对方的主键作为外键. 一对多关系:在"多"的一方添加&qu ...

  7. hibernate映射的 关联关系:有 一对多关联关系,一对一关联关系,多对多关联关系,继承关系

    hibernate环境配置:导包.... 单向n-1:单向 n-1 关联只需从 n 的一端可以访问 1 的一端 <many-to-one> 元素来映射组成关系: name: 设定待映射的持 ...

  8. hibernate 一对一关联关系 及其懒加载,总结

    一对一,则有主对象和从对象之区别 若无主对象,则从对象亦无存在之意义. 主对象为person 从对象为idcard <hibernate-mapping package="cn.itc ...

  9. Hibernate 基于主键的一对一关联关系随手记

    @Test public void testSave() { Boss boss = new Boss(); boss.setName("A-老板"); Company compa ...

随机推荐

  1. iOS 判断有无网络连接

    众所周知,我们在开发APP时,涉及网络连接的时候,都会想着提前判断一下当前的网络连接状态,如果没有网络,就不再请求url,省去不必要的步骤,所以,这个如何判断?其实很简单. 前提:工程添加:Syste ...

  2. android: 长按删除listview的item

    转自:http://www.cnblogs.com/nuistlr/archive/2012/09/07/2675649.html 首先要继承OnItemLongClickListener publi ...

  3. DE1-SOC的sof文件无法下载解决办法

    按照前面友晶科技的文档介绍一步步的做,后面发现根本无法下载sof文件. 通常思维: 一,器件选错了.器件选择错误会导致sof文件无法下载,至于这个ID具体怎么识别我没有追究.如果是这种错误Quartu ...

  4. Nginx+tomcat集群环境搭建

    实验环境:windows xp sp3 Nginx版本:1.5.12: 下载地址:http://nginx.org/en/download.html Tomcat版本:6.0.39 下载地址:http ...

  5. asp.net jquery+ajax异步刷新1

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. ArduinoYun教程之配置Arduino Yun环境

    ArduinoYun教程之配置Arduino Yun环境 配置Arduino Yun 不管你使用前面介绍的哪种方式连接Arduino Yun.如今都能够配置你的Arduino Yun了.首先须要的是使 ...

  7. Delphi发送邮件...

    ///首先在控件栏定位到:Indy Clients加入控件IdSMTP ///再定位到:Indy Misc加入控件IdMessage ///发送邮件函数 procedure TForm1.SendMa ...

  8. 三、IF...ELSE和缩进

    IF...ELSE和缩进 根据用户输入的不同做不同的事情 注意语法结尾的冒号. 例1: name = input("Please input your name:") if nam ...

  9. 06-IOSCore - KVC、CoreData

    一. KVC 1. KVC 使用前:黯淡无光 if ([keyPath isEqualToString:@"name"]) { self.labelName.text = self ...

  10. 高级UIKit-03(NSFileManager、NSFileHandle)

    fileManager文件管理器 [day04_1_FileManager_Search] :查找文件 fileManager有一个方法可以判断文件是否是文件夹, fileExistsAtPath:i ...