前面分享了一些学习grails的心得,可是grails的知识还远不止这些,这次整理了一点有关grails一对多双向关联关系的知识。我认为这样的关联用的地方太多了,这次准备的样例是城市和区域的相关样例。

1.领域模型

class CityInfo {

    static hasMany = [area:AreaInfo]
static fetchMode = [area:'lazy']
Integer id;
String name;
String code;
static mapping = {
table 'm_city'
}
}

hasMany代表CityInfo是一的一方,fetchMode配置的是抓取模式,这里使用的是懒载入(默认)。要注意的是由于我的数据库中对于的表为m_city;假设不配置表示对于的表为CityInfo

class AreaInfo {
static belongsTo=[city:CityInfo]
Integer id;
String name;
String areaCode;
static mapping = {
table 'm_area'
areaCode column:'areaCode'
city column: 'cityId'
}
}

belongsTo配置的是多的一方,也就是是说AreaInfo中存在一个外键名称是city.综合上面的能够看出CityInfo是主表,而AreaInfo是从表。这里有点奇怪的是areaCode映射出来的列名为area_code为了方便我顺便把要映射的列名改掉了

2.创建控制器和视图

这个步骤就不说了,直接使用intellij IDE就能够自己主动为我们生成控制器和视图了。先来看看生成的控制器能不能用

这说明生成的控制器没有问题,以下加入一个方法用来保存城市和区域信息

//保存城市和区域信息
@Transactional
def saveCityAndArea(){
def a=new AreaInfo()
a.setName("西山区")
a.setAreaCode("XS") //Set<AreaInfo> s=new HashSet<AreaInfo>()
// s.add(a) def c=new CityInfo()
c.setName("昆明市")
c.setCode("KM") c.save()
a.setCity(c)
a.save()
render "数据保存成功"
}

这里要注意的是假设是关系型数据库,那么就不要忘记配置事务。遗憾的是级联保存用这个框架貌似有问题,另外要注意的是grail默认的级联保存和更新,可是不会级联删除除非配置的是双向关联(也配置了belongsTo).

接下来我也写了个方法,用来查询对于城市的区域信息:

  //查询城市信息
def queryCity(){ def city=CityInfo.findById(params.id)
Set<AreaInfo> area=city.getArea()
Iterator<AreaInfo> it=area.iterator()
def buf=new StringBuffer()
while(it.hasNext()){
AreaInfo info=it.next()
buf.append(info.getName()+",") }
render buf.toString()
}

要注意的是findBy是一个动态的查询方法,findById就表示通过Id来查询城市信息

grails一对多双向关联的更多相关文章

  1. JPA学习---第九节:JPA中的一对多双向关联与级联操作

    一.一对多双向关联与级联操作 1.创建项目,配置文件代码如下: <?xml version="1.0" encoding="UTF-8"?> < ...

  2. Hibernate从入门到精通(九)一对多双向关联映射

    上次的博文Hibernate从入门到精通(八)一对多单向关联映射中,我们讲解了一下一对多单向映射的相关内容,这次我们讲解一下一对多双向映射的相关内容. 一对多双向关联映射 一对多双向关联映射,即在一的 ...

  3. Hibernate(九)一对多双向关联映射

    上次的博文Hibernate从入门到精通(八)一对多单向关联映射中,我们讲解了一下一对多单向映射的相关 内容,这次我们讲解一下一对多双向映射的相关内容. 一对多双向关联映射 一对多双向关联映 射,即在 ...

  4. Hibernate 一对多双向关联Demo

    以Classes[班级]和Student[学生]为例的Demo //Classes.java public class Classes implements Serializable { privat ...

  5. hibernate 一对多双向关联 详解

    一.解析: 1.  一对多双向关联也就是说,在加载班级时,能够知道这个班级所有的学生. 同时,在加载学生时,也能够知道这个学生所在的班级. 2.我们知道,一对多关联映射和多对一关联映射是一样的,都是在 ...

  6. JPA中的一对多双向关联与级联操作

    学习Spring有两周时间了 , 个人觉得服务端主要实现的是数据关系的维护和数据结构的制定 , 以及由业务需求产生的CRUD , 只要保证对前端提供的接口稳定高效响应 , 具体的前端实现完全不关心. ...

  7. Hibernate中用注解配置一对多双向关联和多对一单向关联

    Hibernate中用注解配置一对多双向关联和多对一单向关联 Hibernate提供了Hibernate Annotations扩展包,使用注解完成映射.在Hibernate3.3之前,需单独下载注解 ...

  8. 15.Hibernate一对多双向关联映射+分页

    1.创建如下数据库脚本 --创建用户信息表 --编号,用户名,密码,年龄,性别,昵称,手机,地址,管理员,图像地址 create table users ( id ) primary key, use ...

  9. Mybatis中使用association及collection进行一对多双向关联示例(含XML版与注解版)

    XML版本: 实体类: package com.sunwii.mybatis.bean; import java.util.ArrayList; import java.util.List; impo ...

随机推荐

  1. 题解报告:hdu 1863 畅通工程

    Problem Description 省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可).经过调查评估,得到的统计表中列出了有可 ...

  2. Unity Android交互过坑指南

    Unity Android交互过坑指南 介于网上看过很多unity和Android交互的教程,都或多或少的漏掉了一些部分,导致编译过程中出现各种问题,特此整理一份教程,仅供参考 介绍 本次实现的是在游 ...

  3. kubernetes installing and using 单机版

    centos安装docker uname -r yum remove docker \ docker-client \ docker-client-latest \ docker-common \ d ...

  4. Laravel5.1学习笔记12 系统架构4 服务容器

    Service Container 介绍 绑定的用法  绑定实例到接口 上下文绑定 标签 解析 容器事件 #介绍 The Laravel service container is a powerful ...

  5. Leetcode0523--Continuous Subarray Sum 连续和倍数

    [转载请注明]https://www.cnblogs.com/igoslly/p/9341666.html class Solution { public: bool checkSubarraySum ...

  6. Java 基础入门随笔(2) JavaSE版——关键字、进制转换、类型转换

    1.Java语言-关键字 关键字:被java语言赋予了特殊含义的词,特点是所有的字母都为小写. java涉及到的关键字整理: 用于定义数据类型的关键字 class interface byte sho ...

  7. Zabbix 监控redis

    Zabbix 监控redis 1.监控脚本,github上的 [root@localhost ~]# cat /etc/zabbix/script/redis-status.sh #!/bin/bas ...

  8. (转) Arcgis for Javascript实现两个地图的联动

    http://blog.csdn.net/gisshixisheng/article/details/40127895 今天在看天地图的时候,有一个多时相的地图显示功能,感觉很好玩,作为技术控的我晚上 ...

  9. Python虚拟环境和requirements.txt文件的使用

    参考: https://www.centos.bz/2018/05/centos-7-4-%E5%AE%89%E8%A3%85python3%E5%8F%8A%E8%99%9A%E6%8B%9F%E7 ...

  10. 使用Flask+uWsgi的方式部署一个blog网站

    本文参考以下文章:https://www.yukunweb.com/2017/12/ubuntu-nginx-uwsgi-flask-app/ 需要学习的地方 nginx+uwsgi部署flask应用 ...