zoukankan      html  css  js  c++  java
  • 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开发文档


  • 相关阅读:
    django 的操作
    numpy 初步学习
    django orm 多对多操作
    selenium 安装chrome 以及chromedriver
    配置uwsgi + nginx
    ubuntu安装 anaconda
    django ---手动删除数据库
    前端(六)之盒模型显隐、定位与流式布局思想
    前端(五)之display 总结与浮动
    前端(四)之精灵图与盒模型布局
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/5198807.html
Copyright © 2011-2022 走看看