Этот вопрос (относительно: последовательности) больше относится к Hibernate, чем к Grails - и хорошо документирован на нашем сайте
Обычно есть несколько причин, по которым «ИТ-отдел говорит, что я должен использовать коммерческий программный пакет» .... Среди них стандарты именования для объектов базы данных, таких как представления, таблицы и даже столбцы.
Другой причиной может быть такой стандарт, как «каждая таблица должна иметь свою собственную последовательность», что является обычной (часто чрезмерно используемой) практикой для обеспечения того, чтобы идентификаторы объектов попадали в определенные диапазоны.
Для этого вы можете добавить блок статического сопоставления для переименований, например, COMMENT становится COMMENT_TBL и подклассом Hibernate Dialect для используемой вами базы данных.
N.B .: Специфичный для ORACLE генератор идентификаторов в замыкании отображения теперь игнорируется средой Grails 1.2.x, поэтому этот вопрос не относится к последним версиям. Смотри JIRA
для некоторой предыстории по этому вопросу - и ориг рекомендация здесь . Имейте в виду, что если вы просто хотите использовать подход «одна последовательность на таблицу», вы можете использовать только подкласс Oracle10gDialect, как это рекомендовано hibernate community , в частности Робом Хассельбаумом:
public class TableNameSequenceGenerator extends SequenceGenerator {
/**
* If the parameters do not contain a {@link SequenceGenerator#SEQUENCE} name, we
* assign one based on the table name.
*/
public void configure(Type type, Properties params, Dialect dialect) throws MappingException {
if(params.getProperty(SEQUENCE) == null || params.getProperty(SEQUENCE).length() == 0) {
String tableName = params.getProperty(PersistentIdentifierGenerator.TABLE);
if(tableName != null) {
String seqName = “seq_” + tableName;
params.setProperty(SEQUENCE, seqName);
}
}
super.configure(type, params, dialect);
}
}
public class MyDialect extends Oracle10gDialect {
public Class getNativeIdentifierGeneratorClass() {
return TableNameSequenceGenerator.class;
}
}