grails - 覆盖 Grails 中的默认序列名称

标签 grails

如何重命名 HIBERNATE_SEQUENCE ?为每个表生成一个序列(并为这些序列指定特定名称)的方法有据可查,但这不是我要寻找的。
我不介意所有域类共享一个序列。我只需要给它一个特定于应用程序的名称。

最佳答案

这是我用来设置序列名称的代码。

首先,SequenceGenerator:

package com.foo;

import java.util.Properties;

import org.hibernate.MappingException;
import org.hibernate.dialect.Dialect;
import org.hibernate.id.SequenceGenerator;
import org.hibernate.type.Type;

public class TableNameSequenceGenerator extends SequenceGenerator {

    public static final String CUSTOM_SEQUENCE_NAME = "MYAPP_SEQUENCE"

    public void configure(Type type, Properties params, Dialect dialect) throws MappingException {
        if(params.getProperty(SEQUENCE) == null || params.getProperty(SEQUENCE).length() == 0) {
            String seqName = CUSTOM_SEQUENCE_NAME;
            params.setProperty(SEQUENCE, seqName);               
        }
        super.configure(type, params, dialect);
    }

}

接下来,Oracle方言:
package com.foo;

import org.hibernate.dialect.Oracle10gDialect;

public class MyAppOracleDialect extends Oracle10gDialect {
    public Class getNativeIdentifierGeneratorClass() {
        return TableNameSequenceGenerator.class;
    }
}

最后,DataSource.groovy 需要了解方言:
dataSource {
    pooled = true
    driverClassName = "oracle.jdbc.OracleDriver"
    // username, password....
    dialect='com.foo.MyAppOracleDialect'
}

关于grails - 覆盖 Grails 中的默认序列名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4412716/

相关文章:

grails - ifNotLoggedIn标签-Grails 2.4.4/Spring Security 2.0-RC4-无法在空对象上获取属性 'securityConfig'

java - 斯波克。如何模拟java.lang.Class?

grails - Grails Spring Security插件是否仍然维护?

unit-testing - Grails 单元测试面临的问题

hibernate - 在Grails中重用JPA带注释的类

grails - Grails Controller 的beforeInterceptor

grails - 哪个选项更好地扩展了功能1)添加属性或2)创建新表?

selenium - 如何使用 firefox 驱动程序运行 GEB 测试?

Grails 可搜索关系

grails - 为什么Grails脚手架没有列出我的域对象的所有成员?