在Grails/Hibernate中,您能否仅在未分配时将生成器设置为增量?
有没有办法让hibernate在未分配的情况下使用自动生成的id,但在分配的情况下使用分配的值?我相信Grails中没有现成的解决方案,但是实现自己的org.hibernate.id.IdentifierGenerator应该相当简单 实现该接口时,只要未分配id,您就可以委托默认的id生成策略,否则将使用已分配的域对象值 一个简单的实现,在未分配密钥时委托给IdentityGenerator,如下所示:在Grails/Hibernate中,您能否仅在未分配时将生成器设置为增量?,hibernate,orm,grails,groovy,Hibernate,Orm,Grails,Groovy,有没有办法让hibernate在未分配的情况下使用自动生成的id,但在分配的情况下使用分配的值?我相信Grails中没有现成的解决方案,但是实现自己的org.hibernate.id.IdentifierGenerator应该相当简单 实现该接口时,只要未分配id,您就可以委托默认的id生成策略,否则将使用已分配的域对象值 一个简单的实现,在未分配密钥时委托给IdentityGenerator,如下所示: package my.company.hibernate import org.hibe
package my.company.hibernate
import org.hibernate.engine.SessionImplementor
public class PreAssignedIdGenerator extends org.hibernate.id.IdentityGenerator {
public Serializable generate(SessionImplementor session, Object object) {
return object.id ? object.id : super.generate(session, object)
}
}
您的域类需要定义新的id生成器:
class FooDomain {
Long id
static mapping = {
id generator: "my.company.hibernate.PreAssignedIdGenerator"
}
}