grails一对一关联关系

一对一关联关系开发中用的没有一对多那么广泛,但是我觉得掌握以下还是有必要的,一对一关联关系有一张表存在外键,引用的一般是主表的主键。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一对一关联关系,布布扣,bubuko.com

时间: 2024-10-01 12:23:32

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

jpa的双向一对多和双向一对一关联关系

在分享之前先给大家看两个异常,应该说这一类的异常还是很常见的,主要原因是jar包冲突 异常1: java.lang.NoSuchFieldError: INSTANCE at org.hibernate.type.BasicTypeRegistry.<init>(BasicTypeRegistry.java:94) at org.hibernate.type.TypeResolver.<init>(TypeResolver.java:59) at org.hibernate.cfg

EnityBean一对一关联关系

一.工程架构: 工程资源下载地址:http://download.csdn.net/detail/u012750578/7660633 二.beans.xml配置 <?xml version="1.0" encoding="UTF-8"?> <!-- 基于注解方式 http://ehcache-spring-annotations.googlecode.com/svn/schema/ehcache-spring http://ehcache-spr

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

人和身份证之间就是一个典型的一对一关联关系.实现一对一关联关系映射的方式有两种一种是基于外键,一种是基于主键,下面我们先看基于外键的关联方式 首先看他们的实体类 Person类 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 package entity; public class Person {     private Integer id;     private String name;     pr

Hibernate映射一对一关联关系

映射一对一关联 Hibernate提供了两种映射一对一关联关系的方式,分别是按照外键映射和按照主键映射. 下面是员工表和档案信息表(员工和档案表之间的关系是一对一的关系)  档案表(dept) 1 public class Dept { 2 private Integer deptid; 3 private String mystreet; 4 private Emp emp; 5 6 public Dept() { 7 } 8 9 public Dept(Integer deptid, Str

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

俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习!涉及的知识点总结如下: One to One 映射关系 一对一单向外键(XML/Annotation) 一对一双向外键关联(XML/Annotation) 联合主键 一对一单向外键联合主键(Xml/Annotation) 一对一组件关联(XML/Annotation) 理解组件 领域驱动设计——自动生成数据库脚本 一对一关系的小结 一些出错问题的总结 自动生成数据库脚本 一般在项目开发过程中,我们的习惯是先建好数据库和表,然后在进

Hibernate 一对一关联关系

在Hibernate中,一对一关联关系有两种情况: 基于外键映射的一对一 基于主键映射的一对一 基于外键映射的一对一 这种映射其实是由多对一而来,这种映射情况下,外键可以放在任意的一端,在需要存放外键的一端(简称a端),添加<many-to-one>节点,为<many-to-one>节点增加unique="true"属性来约束多对一成为一对一,另一端(简称b端)使用<one-to-one>节点来映射,并增加property-ref属性指定使用在该端(

jpa双向一对一关联关系

1.1.  关系维护方 Person.java package com.morris.entity; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persi

JPA学习笔记(9)——映射双向一对一关联关系

双向一对一关联关系 一个部门有一个经理,一个经理管一个部门 Department实体类 package com.jpa.helloworld2; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; impo

(十)Hibernate的一对一关联关系

一.概述 我们以Company与Address类为例,介绍映射一对一关联关系的方法. 一对一的关联方法有两种 -按照外键映射:两个表任意一个表定义一个外键,来关联另一个表. -按照主键映射:一个表的主键同时作为外键,和另一个表的主键保持一致. 二.按照外键映射 (1)创建实体类 public class Company { private Integer id; private String name; private Address address; public Integer getId(