Нет необходимости, чтобы первичный ключ был длинным, это просто стандарт для Hibernate и Grails.Вы можете рассматривать столбец varchar, который является уникальным, как первичный ключ с классом домена, например:
class Person {
String username
String firstName
String lastName
static mapping = {
id name: 'username', generator: 'assigned'
version false
}
}
Это работает для таблицы, определенной этим DDL:
create table person (
username varchar(255) not null,
first_name varchar(255) not null,
last_name varchar(255) not null,
primary key (username)
);
Я добавил 'version false ', поскольку это устаревшая система, и у вас, вероятно, нет столбца оптимистической блокировки' version '.