grails一对多双向关联

2023-05-16

前面分享了一些学习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来查询城市信息



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 适合 .Net 开发人员的 Grails/Roo

    我目前正在学习 Grails 和 Roo 绝大多数培训材料都是针对新开发人员或现有 Java 开发人员 有谁知道使用 Net C ASP Net Asp Net MVC 翻译现有开发经验的任何指南 资源或技巧 你做过很多 ASP MVC 吗
  • 使用 JQuery 的 Grails 项目,无需插件

    我正在尝试设置一个简单的 Grails 2 1 1 应用程序 该应用程序将使用 JQuery 我有一个名为 TestController 的控制器和一个位于正确位置的index gsp 我手动添加 JQuery 库 没有使用 Grails
  • 如何保存具有多个多对一关系的 GORM 对象?

    假设我有以下域类层次结构 class School String name static hasMany teachers Teacher students Student class Teacher String name static
  • Grails、Spring Security Core - 从应用程序中删除 /login/auth

    我在 Grails 应用程序中安装了 Spring Security Core 并使用s2 quickstart 我想要 来处理登录和注销操作 对我来说 这意味着未登录的用户只能访问根页面 而不能访问其他页面 实际上 对于没有角色 ROLE
  • 如何在 Grails 中管理对象修订?

    我需要对我的文章实施修订系统grails网络应用程序 在搜索 grails 论坛 stackoverflow grails 插件和谷歌搜索互联网后 我最终得到了 3 个选项 Option 1 使用grails Envers 插件 see h
  • 使用 Grails GORM 从旧数据库中的 char 字段中去除尾随空格

    映射时去除尾随空格的可能解决方案有哪些char遗留数据库中的字段 我看到以下选项 Calling trim 在使用时 控制器 视图等 重写属性访问器以返回 trim 使用 Hibernate UserType 修剪空格 我倾向于重写属性访问
  • 从 Grails 控制器渲染视频内容

    毫无疑问又是一个愚蠢的新手问题 我在 Grails 控制器中有一个字节数组 其中包含视频文件 确切地说是 mp4 文件 的内容 我熟悉如何从 grails 控制器渲染 JSON XML 和其他基本类型 但我找不到任何显示如何输出视频的示例
  • 如何使用 JPA 和 Hibernate 修复 StaleObjectStateException

    控制器逻辑 def updateObject Object o Object get params id as Long o otherObjects clear objectDataService saveObject o id Othe
  • Grails 2.0 的性能真的那么低吗?

    我对基于 JVM 堆栈的 WEB 开发有点新手 但未来的项目将特别需要一些基于 JVM 的 WEB 引擎 所以我开始寻找一些可以快速完成事情的方法 并转向尝试 Grails 从书中看 事情看起来不错 但对很长的启动时间 grails run
  • Grails 域 obj 操作参数和关联数据绑定

    我知道 Grails v2 3引入了一些变化 https github com grails grails core wiki Data Binding数据绑定的工作方式 但是当我有一个域 obj 作为操作参数时 我正在努力弄清楚如何让自动
  • Grails 测试默认在测试环境中运行吗?

    是否有必要提供这样的环境grails test test app Grails 测试确实运行在test默认环境 一般来说 Grails 命令默认为dev如果没有指定 但是test app命令覆盖环境test如果没有指定 并且war命令默认为
  • 带有第 3 方库的 Grails Asset-Pipeline 系统

    Grails2 4 现在使用的是资产管道用于管理和处理 Grails 应用程序 而不是资源系统 中的静态资产 这是相当新的 互联网上还没有太多关于它的文档 我的问题是 如何正确处理第三方库 例如 select2 http ivaynberg
  • 调试 Bootstrap.groovy 的最佳方法是什么?

    我正在将一些数据插入数据库 但即使我看不到任何验证错误 某些对象也没有插入 使用 stacktrace 或 sql 出错的最佳方法是什么 以便我可以找出问题所在 例如我这样做 new XXXXX property blah save flu
  • 如何在 gsp grails 文件上显示字符串新行?

    我已经在数据库中存储了一个字符串 当我保存并检索字符串时 我得到的结果如下 这是我的新对象 测试多条线路 测试 1 测试2 测试 3 这就是当我调用 save 和 index 方法时从 println 命令得到的结果 但是当我在屏幕上显示它
  • 使用Table Per Subclass时如何确保数据完整性?

    我正在使用每个子类的表Grails 中的策略通过设置tablePerHierarchy静态的性质mapping我的超类中的字段为 false 这样 Grails 会为我的超类创建一张表 并为我的每个子类创建一张附加表 然而 虽然超类和子类记
  • Grails 3.x bootRun 失败

    我正在尝试在 grails 3 1 11 中运行一个项目 但出现错误 失败 构建失败并出现异常 什么地方出了错 任务 bootRun 执行失败 进程 命令 C Program Files Java jdk1 8 0 111 bin java
  • 如何在 grails 域类中设置默认值

    有没有办法为域类属性设置默认值 我有一堂课叫PayMethod 我想要的地方name属性默认为 Cash 我在创建此表时想要这个默认值 这可以使用约束吗 package abc import util UserUtil import emb
  • 在 grails 中使用 mockDomain 时如何覆盖方法的逻辑?

    我想像往常一样模拟一个域 mockDomain Class 但我想覆盖域的方法之一 beforeDelete具体来说 仅针对该单元测试使用自定义逻辑 如何才能实现这一目标 您可以使用 Groovy 元类重写域类上的 beforeDelete
  • 是否可以覆盖方法 **CreateLink** 和 **CreateLinkTo** 的行为?

    可以覆盖方法的行为创建链接 and 创建链接 您可以使用元编程来替换 ApplicationTaglib 上的闭包 ApplicationTagLib metaClass getCreateLink gt return attrs gt y
  • 更改分页部分中显示项目的数量

    有没有什么方法可以更改 grails 2x 中用户将显示 bean 的数量更改为分页部分 我在 grails 文档中找不到这个 它的意思是 参见 itemsPerPage

随机推荐

  • ArchLinux安装常用软件

    安装完Arch操作系统后的一些常用软件安装 首先同步下载源 xiaomo 64 Arch XIAOMO sudo pacman Sy 安装vim xiaomo 64 Arch XIAOMO echo e 34 n 34 sudo pacma
  • cmd美化

    原本的cmd 虽然原本的cmd很简约黑底白字 xff0c 但是看久了也会视觉疲劳 美化 xff08 丑化 xff09 打开cmd右键头部选择属性 字体选项这里可以修改字体的大小和选择字体 xff0c 修改之后下方会有预览 xff0c 颜色选
  • Got timeout reading communication packets解决方法

    Got timeout reading communication packets解决方法 http www th7 cn db mysql 201702 225243 shtml Note Aborted connection xxxx
  • java在数字前面自动补零的方法

    将元数据前补零 xff0c 补后的总长度为指定的长度 xff0c 以字符串的形式返回 64 param sourceDate 64 param formatLength 64 return 重组后的数据 public static Stri
  • MariaDB命令详解

    MariaDB命令详解 mysql客户端程序 xff1a 命令行交互式客户端程序 xff1a mysql mysql mysql OPTIONS database mysql help 配置文件的读取次序 xff1a etc mysql m
  • python文本文件操作诗句给上一句输出下一句_[Python] 自动化办公 定制微信每日一句诗...

    转载请注明 xff1a 陈熹 chenx6542 64 foxmail com 简书号 xff1a 半为花间酒 若公众号内转载请联系公众号 xff1a 早起Python 这篇文章能学到的主要内容 xff1a 利用 喵提醒 推送消息至微信 x
  • 我的年终总结,作为研发,在2018年都有哪些进步、收获与成长?

    2018 结束了 部门开会总结了过去的工作与未来的展望 xff0c 也是个不错的机会去回顾 审视 思考自己的 2018 年 玄难说过人与人的差距来自于思考与总结 xff0c 我深深地认同这一点 我也把自己的一部分思考写下来 xff0c 在公
  • Arch无法更新和安装软件

    今天用户yay明来安装htop时 xff0c 一直卡死在以下输出内容出 xff1a db lck is present Waiting 更新软件源也出现以下故障 xff1a sudo pacman Syy sudo ivan 的密码 xff
  • 云主机的硬盘IO性能比较

    测试方式 因为工作等需要 xff0c 手里有一堆云主机 xff0c 前几天忽然想到来测试对比一下各家的IO性能如何 测试方法不严谨 xff0c 仅供参考 测试工具为fio xff0c 测试命令如下 xff08 以sync方式为例 xff09
  • 定制小狼豪(五笔+拼音)输入法

    小狼毫输入法是一个给程序员折腾的输入法 xff0c 可以自由定制 rime是一个输入法框架 xff0c 小狼毫是在windows平台上的名称 相关教程和下载 xff1a https jianguoyun com p DRylhFMQv 3j
  • 10.12 firewalld和netfilter

    2019独角兽企业重金招聘Python工程师标准 gt gt gt Linux防火墙 netfilter selinux临时关闭 setenforce 0selinux永久关闭 vi etc selinux configcentos7之前使
  • 使用 build-simple-cdd 快速定制 Debian 安装盘

    为什么80 的码农都做不了架构师 xff1f gt gt gt 官方推荐了 build simple cdd 来 定制Debian安装盘 sudo apt get y install simple cdd xorriso 创建基础目录和文件
  • PostSharp-5.0.26安装包_KeyGen发布_支持VS2017

    PostSharp 5 0 26安装包 KeyGen发布 支持VS2017 请低调使用 PostSharp安装及注册步骤截图 rar 请把浏览器主页设置为以下地址支持本人 https www duba com un 454974 16968
  • centos7 Firewall防火墙开启80端口

    为什么80 的码农都做不了架构师 xff1f gt gt gt centos7 默认是FirewallD 提供支持网络 防火墙区域 zone 定义网络链接以及接口安全等级的动态防火墙管理工具 xff0c 利用FirewallD开启80端口操
  • 安卓6.0系统权限问题android.permission.WRITE_SETTINGS

    关于 Android permission WRITE SETTINGS 的权限 xff0c 申请 xff0c 判断 精简代码如下 xff1a if Build VERSION SDK INT gt 61 Build VERSION COD
  • js match函数注意

    match函数 String prototype match 参数 regexp 返回 返回包含所有匹配的数组 xff0c 如果匹配失败返回Null 数组第一项是整段字符串的匹配 xff0c 第二项至以后都是捕获匹配 注意 需要注意的是 x
  • VR发展简史

    最初的起源 事实上 xff0c 虚拟现实由来已久 xff0c 其概念最早被提及应该追溯到Aldous Huxley xff08 阿道司 赫胥黎 xff09 1932年推出的长篇小说 美丽新世界 xff0c 这篇小说以26世纪为背景 xff0
  • crontab 每月执行一次怎么写? - Linux系统管理 - ChinaUnix.net -

    crontab 每月执行一次怎么写 xff1f Linux系统管理 ChinaUnix net 0 19 1 bin sh xxx sh 每个月的1号的19点钟运行xxx sh 分钟 小时 日子可以更改 xff0c 后两项为 就是month
  • SparkStreaming结合Kafka使用

    spark自带的example中就有streaming结合kafka使用的案例 xff1a SPARK HOME examples src main scala org apache spark examples streaming Kaf
  • grails一对多双向关联

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