Чтобы заставить grails использовать строки для идентификаторов, просто объявите свойство String id
. Чтобы заполнить его пользовательским UUID, я бы использовал генератор идентификатора гибернации вместо beforeInsert. Создайте класс, который расширяет org.hibernate.id.IdentifierGenerator
, затем добавьте отображение генератора идентификаторов, подобное этому, в класс вашего домена:
class MyIdGenerator extends IdentifierGenerator {
Serializable generate(SessionImplementor session, Object object) {
return MyUUID.generate()
}
}
class MyDomain {
String id
static mapping = {
id generator:"my.package.MyIdGenerator", column:"id", unique:"true"
}
}