grails中除Id之外的AutoIncrement字段

时间:2011-11-08 04:57:45

标签: grails groovy

我是Grails的新手。我的域对象中有一个字段,我将其定义为String

String ponum

当我第一次点击创建页面时,“ponum”字段必须显示0001,之后它必须保存在数据库中。当我第二次点击时,“ponum”字段必须显示0002,之后它有保存在database.Everytime我点击创建页面“ponum”字段必须自动增加并保存它database.I谷歌,但我没有得到任何文件。                                                                        谢谢

2 个答案:

答案 0 :(得分:6)

因为事情总是得到一个id(假设你使用带有标准id genaerator的常规rdbms),为什么不假装有一个基于id的变量ponum

只需在域类中添加一个getter:

class Page {
  String getPonum() {
    String.format( "%04d", id )
  }
}

答案 1 :(得分:1)

根据this answer,不可能使用hibernate生成器(用于id的那些)来做到这一点。如果你真的需要使用Hibernate生成器,那么答案中也会描述一种解决方法。

在您的情况下,您可以在插入新对象时使用拦截器生成您的ponum属性:

class Yours {
  int ponum

  def beforeInsert() {
    def lastPonum = Book.list([sort: 'ponum', order:'desc', max: 1])
    if(lastPonum)
      ponum = (lastPonum.pop().ponum as int) + 1 as String
    else
      ponum = '0'
  }
}