在域类中,我使用“分配的”ID 生成器:
static mapping = {
id(generator: 'assigned')
}
在保存实体之前,我想确保它有一个 id 集。
def beforeSave() {
if (!id) {
id = DomainUtil.newId();
}
}
不幸的是,这不起作用:
org.hibernate.id.IdentifierGenerationException: ids for this class must be manually assigned before calling save(): was.Product
“beforeSave”钩子似乎是在检查 id 之后被调用的。有没有办法解决这个问题?我使用 Grails 2.1.1。
编辑:
这似乎可行,但它很hacky:在属性声明中,我添加了:
String id = DomainUtil.newId();
这将使用“默认”初始化 id,然后可以在调用之前对其进行修改save()
。