Hibernate “圣杯”;指定的;ID生成策略与beforeSave
在域类中,我使用“分配的”ID生成器:Hibernate “圣杯”;指定的;ID生成策略与beforeSave,hibernate,grails,Hibernate,Grails,在域类中,我使用“分配的”ID生成器: static mapping = { id(generator: 'assigned') } 在保存实体之前,我希望确保它已设置id def beforeSave() { if (!id) { id = DomainUtil.newId(); } } 不幸的是,这不起作用: org.hibernate.id.IdentifierGenerationException: ids for this class mus
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之后调用的。有办法解决这个问题吗?我正在使用Grails2.1.1
编辑:
这似乎是可行的,但它相当骇人听闻:在propert声明中,我补充道:
String id = DomainUtil.newId();
这将使用“默认值”初始化id,然后可以在调用
save()
beforeSave
之前对其进行修改,这不是受支持的GORM事件。您想在插入之前使用
您可以在验证之前尝试
。它可能是最接近你所寻找的东西。但我不确定它是否适用于你的具体情况。它将在插入或更新时执行,因为save()
调用validate()
你是对的,不知道我从哪里得到的。尽管如此,此事件似乎是在hibernate检查id是否存在后触发的,因此我无法在我的特定情况下使用它。