`
dellsoft
  • 浏览: 112845 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

grails assgined the id

阅读更多

 

使用hibernate 的自定义主键

 

import org.hibernate.SessionFactory

class PersonController {
    SessionFactory sessionFactory 
    def index = { redirect(action:list,params:params) }

    // the delete, save and update actions only accept POST requests
    static allowedMethods = [delete:'POST', save:'POST', update:'POST']

    def list = {
        params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)
        [ personInstanceList: Person.list( params ), personInstanceTotal: Person.count() ]
    }

    def show = {
        def personInstance = Person.findById( params.id.toString() )

        if(!personInstance) {
            flash.message = "Person not found with id ${params.id}"
            redirect(action:list)
        }
        else { return [ personInstance : personInstance ] }
    }

    def delete = {
        def personInstance = Person.get( params.id )
        if(personInstance) {
            try {
                personInstance.delete()
                flash.message = "Person ${params.id} deleted"
                redirect(action:list)
            }
            catch(org.springframework.dao.DataIntegrityViolationException e) {
                flash.message = "Person ${params.id} could not be deleted"
                redirect(action:show,id:params.id)
            }
        }
        else {
            flash.message = "Person not found with id ${params.id}"
            redirect(action:list)
        }
    }

    def edit = {
        def personInstance = Person.get( params.id )

        if(!personInstance) {
            flash.message = "Person not found with id ${params.id}"
            redirect(action:list)
        }
        else {
            return [ personInstance : personInstance ]
        }
    }

    def update = {
        def personInstance = Person.get( params.id )
        if(personInstance) {
            if(params.version) {
                def version = params.version.toLong()
                if(personInstance.version > version) {
                    
                    personInstance.errors.rejectValue("version", "person.optimistic.locking.failure", "Another user has updated this Person while you were editing.")
                    render(view:'edit',model:[personInstance:personInstance])
                    return
                }
            }
            personInstance.properties = params
            if(!personInstance.hasErrors() && personInstance.save()) {
                flash.message = "Person ${params.id} updated"
                redirect(action:show,id:personInstance.id)
            }
            else {
                render(view:'edit',model:[personInstance:personInstance])
            }
        }
        else {
            flash.message = "Person not found with id ${params.id}"
            redirect(action:edit,id:params.id)
        }
    }

    def create = {
        def personInstance = new Person()
        personInstance.properties = params
        return ['personInstance':personInstance]
    }

    def save = {
        def session = sessionFactory.getCurrentSession()
        def tx = session.beginTransaction()
      
        def personInstance = new Person(params)
        Psnbbm psnbbm =  Psnbbm.findBySPrefix("CKNM")
        Long curId = psnbbm.curValue
        int nmLength = psnbbm.nmLength
        personInstance.id  =  (curId+1).toString().padLeft(9,"0")
        if(!personInstance.hasErrors() && personInstance.save()) {
            psnbbm.curValue = curId+1
            psnbbm.save()
            tx.commit()
            flash.message = "Person ${personInstance.id} created"
            redirect(action:show,id:personInstance.id)

        }
        else {
            tx.rollback()
            render(view:'create',model:[personInstance:personInstance])

        }
    }
}

 

 

   def session = sessionFactory.getCurrentSession()
        def tx = session.beginTransaction()
      
        def personInstance = new Person(params)
        Psnbbm psnbbm =  Psnbbm.findBySPrefix("CKNM")
        Long curId = psnbbm.curValue
        int nmLength = psnbbm.nmLength
        personInstance.id  =  (curId+1).toString().padLeft(9,"0")
        if(!personInstance.hasErrors() && personInstance.save()) {
            psnbbm.curValue = curId+1
            psnbbm.save()
            tx.commit()
            flash.message = "Person ${personInstance.id} created"
            redirect(action:show,id:personInstance.id)

        }
自定义的编码表

class Psnbbm {
    String sPrefix
    Long curValue
    int nmLength
    String description
    
    static constraints = {
      
    }
}

class Person {
        String id
        String foo

        static mapping = {
                id column: "id", generator: "assigned"
                version false
        }

    def beforeInsert = {

    }
}
方式二、
class Pwcity implements Serializable{
  String  id
  String  fchs
  String  feng
  String  fzip
  String  faircode
  String  ftype
  Long    forder = 0
  String  fctry
  Date    dateCreated
  Date    lastUpdated
  static constraints = {
//    fid(nullable:false,uinque:true,size:0..10)
    fchs(nullable:false,size:0..20)
    feng(nullable:false,size:0..40)
    fzip(nullable:false,size:0..10)
    faircode(nullable:false,size:0..10)
    ftype(nullable:false,size:0..8)
    fctry(nullable:false,size:0..20)
  }
  static mapping = {
    autoTimestamp false
    table 'PWCITY'
    version false
//    id composite :['fid']
    id     column: 'CITY_ID' ,sqlType:'varchar(10)',generator:'assigned',unique:'true'
    fchs    column: 'CITY_ZHS'
    feng    column: 'CITY_ENG'
    fzip    column: 'CITY_ZIP'
    faircode column: 'CITY_AIRCODE'
    ftype column: 'CITY_TYPE'
    forder column: 'CITY_ORDER'
    fctry column: 'CITY_CTRY'
    dateCreated column: 'YGZD_CRTIME'
    lastUpdated column: 'YGZD_UPTIME'
  }

  public void setId(String s) {
    id = s.padLeft(10,"0")
  }

  public String getId() {
    return id
  }


  def beforeInsert() {
    dateCreated = new Date()
    lastUpdated = new Date()
  }

  def beforeUpdate() {
    lastUpdated = new Date()
  }
}
 
分享到:
评论

相关推荐

    The definitive guide to grails 2 英文版 书 代码

    《The Definitive Guide to Grails 2》是Grails框架深入学习的重要参考资料,由业界专家撰写,旨在为开发者提供全面、详尽的Grails 2技术指导。这本书结合了理论与实践,不仅介绍了Grails的基本概念,还涵盖了高级...

    the definitive guide to grails 2

    《Grails 2 的终极指南》是一本深入探讨Grails框架精髓的专业书籍,该书以英文撰写,旨在为读者提供全面、深入的Grails框架学习资料。Grails框架基于Groovy语言,是一种高度动态、敏捷的Java应用开发框架,它简化了...

    Grails Grails Grails

    **Grails 框架详解** Grails 是一个基于 Groovy 语言的开源Web应用程序框架,它构建在Java平台之上,旨在简化开发过程并提高生产力。Grails 的设计深受Ruby on Rails的影响,提供了MVC(模型-视图-控制器)架构模式...

    Grails权威指南 Grails权威指南

    《Grails权威指南》是一本全面深入探讨Grails框架的专著,旨在帮助读者掌握这一强大的Web开发工具。Grails是一种基于Groovy语言的开源框架,它为构建现代、高效的应用程序提供了简洁高效的解决方案。本指南针对不同...

    Eclipse下搭建Grails项目

    【Grails项目搭建详解】 Grails是一个基于Groovy语言的开源Web应用框架,它简化了开发过程,尤其适合快速构建动态网站。在Eclipse中搭建Grails项目可能相对复杂,但通过以下步骤,即使是初学者也能顺利进行。 1. *...

    grails-用户手册

    《Grails用户手册》 Grails,作为一个基于Groovy语言的开源Web应用框架,深受开发者喜爱,它简化了Java开发的复杂性,提供了强大的MVC(Model-View-Controller)架构,以及丰富的插件系统。这份用户手册将帮助你...

    eclipse开发grails插件

    对于Grails开发,我们需要的是Eclipse中的Grails插件,它能够提供对Grails项目的创建、运行、调试等一系列功能。 **Grails**是基于Groovy语言的全栈式Web开发框架,它借鉴了Ruby on Rails的设计理念,提供了快速...

    Grails Cometed. The best web push

    **Grails CometD:最佳Web推送技术** 在现代Web开发中,实时通信是不可或缺的一部分,它使得用户可以即时获取服务器端的数据更新,无需频繁刷新页面。Grails CometD框架就是为了实现这种实时交互而设计的。本文将...

    grails中文入门简介

    Grails是一个基于Groovy语言的全栈框架,它遵循约定优于配置的原则,并且紧密集成Spring和Hibernate等流行的Java库,简化了开发流程。Grails在IT行业中尤其受到重视,因为它能够帮助开发者快速搭建并部署基于MVC模式...

    grails-docs-1.0.3

    grails参考文档 The Grails Framework - Reference Documentation Authors: Graeme Rocher, Marc Palmer Version: 1.0.3

    grails快速开发web

    ### Grails 快速开发 Web 应用程序 #### 一、Grails 概述 Grails 是一种基于 Groovy 的开源应用框架,用于简化 Web 应用程序的开发过程。它采用约定优于配置的原则,这使得开发者可以更快地创建功能丰富的 Web ...

    grails-2.4.4.zip

    《Grails 2.4.4 框架深度解析》 Grails 2.4.4 是一个基于Java的开源Web应用框架,它利用Groovy语言的强大特性,为开发者提供了一种高效、灵活的开发环境。这个压缩包“grails-2.4.4.zip”包含了完整的Grails 2.4.4...

    Grails中文参考手册

    **Grails 概述** Grails 是一个基于 Groovy 语言的开源 web 应用程序框架,它构建在 Java 平台上,旨在提高开发效率,简化常见 Web 开发任务。Grails 遵循 Model-View-Controller (MVC) 架构模式,允许开发者快速...

    eclipse插件grails(groovy)

    Eclipse 插件 Grails(Groovy)是一个强大的开发工具,它使得在Eclipse环境中进行Groovy和Grails应用的开发变得更为便捷。Groovy是一种动态、面向对象的编程语言,而Grails则是一个基于Groovy的开源Web应用框架,...

    Groovy和Grails配置方法

    ### Groovy和Grails配置方法 #### 一、Groovy与Grails简介 Groovy是一种强大的面向对象编程语言,它运行在Java平台上,并且能够直接与Java代码进行交互。Groovy支持函数式编程特性,拥有丰富的语法糖以及简洁的...

    grails login

    **Grails登录系统详解** Grails是一个基于Java的开源Web应用程序框架,它使用Groovy语言进行开发,提供了高效、简洁的编程模型。在Grails中实现用户登录功能是构建任何Web应用的基础,它确保了数据的安全性和用户...

    The definate guide to Grails

    《Grails 完全指南》:深入探索 Grails 框架的核心概念与实践 《Grails 完全指南》是 Grails 设计者 Graeme Rocher 和 Jeff Brown 联合编写的经典学习资料,旨在为开发者提供全面、深入的 Grails 框架理解和实践...

Global site tag (gtag.js) - Google Analytics