简短的答案是没有,没有 简单的
方法可以做到这一点。但是,我找到了一种有效的解决方案。基本上,您需要实现自定义方言。这是一个实现(请在注释中注明实现的原始来源)。
package com.my.custom;import java.util.Properties;import org.hibernate.dialect.Dialect;import org.hibernate.dialect.PostgreSQLDialect;import org.hibernate.id.PersistentIdentifierGenerator;import org.hibernate.id.SequenceGenerator;import org.hibernate.type.Type;public class TableNameSequencePostgresDialect extends PostgreSQLDialect { @Override public Class<?> getNativeIdentifierGeneratorClass() { return TableNameSequenceGenerator.class; } public static class TableNameSequenceGeneratorextends SequenceGenerator { @Override public void configure( final Type type, final Properties params, final Dialect dialect) { if (params.getProperty(SEQUENCE) == null || params.getProperty(SEQUENCE).length() == 0) { String tableName = params.getProperty(PersistentIdentifierGenerator.TABLE); if (tableName != null) { params.setProperty(SEQUENCE, "seq_" + tableName); } } super.configure(type, params, dialect); } }}上述实施应当存储为
TableNameSequencePostgresDialect.java下
src/java/com/my/custom你的Grails项目中。
接下来,更新您的语言
DataSource.groovy以使用此新的自定义方言。
dialect = com.my.custom.TableNameSequencePostgresDialect
差不多了。不 容易, 但是可以做到。



