看起来 Hibernate 的 GUID 支持实际上只是为了包装 Oracle 的实现,因此它不是可移植的,并且不适用于 H2。但它很简单,可以在任何地方使用您自己的。实现org.hibernate.id.IdentifierGenerator
接口,例如
package com.mycompany.myapp
import org.hibernate.engine.SessionImplementor
import org.hibernate.id.IdentifierGenerator
class UuidIdentifierGenerator implements IdentifierGenerator {
Serializable generate(SessionImplementor session, object) {
UUID.randomUUID().toString()
}
}
并将生成器属性更改为您的实现的完整类名:
class MyDomainClass {
String id
// other fields
static mapping = {
id generator: 'com.mycompany.myapp.UuidIdentifierGenerator'
}
}