我是Grails的新手。我的域对象中有一个字段,我将其定义为String
。
String ponum
当我第一次点击创建页面时,“ponum”字段必须显示0001,之后它必须保存在数据库中。当我第二次点击时,“ponum”字段必须显示0002,之后它有保存在database.Everytime我点击创建页面“ponum”字段必须自动增加并保存它database.I谷歌,但我没有得到任何文件。 谢谢
答案 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'
}
}