在Grails中配置Postgres

时间:2012-10-12 01:21:01

标签: hibernate postgresql grails gorm

我有一个迁移到MySQL和PostgreSQL的应用程序,我在数据分配方面都有不同的行为。

通过分析在Postgres中创建的数据库,我意识到每个表中创建的ID的编号不会在另一个表的更改中重置。例如,它在寄存器3'Table1'中设置并将ID 1设置为3.当插入另一个表中另一个类的对象时,应该为该表启动ID,但它遵循前面的顺序和当对象持久存在'table2'而不是他的第一次开始时,ID继续从4开始计数。我还注意到Mysql中的一些变化,因为'false'字段'boolean'是preenchdio,其中'0'在Postgres中填充'假'。

我更新了JDBC,但问题还在继续。我想也许在该领域应该有一些“映射”配置,但不确定。

我的数据源是:

environments {
development {
    dataSource {

        dbCreate = "update" // one of 'create', 'create-drop', 'update', 'validate', ''

    url = "jdbc:postgresql://localhost:5432/app"
        driverClassName = "org.postgresql.Driver"
        dialect = org.hibernate.dialect.PostgreSQLDialect
        //url = "jdbc:mysql://localhost:3306/app"
        username = "app"
        password = "app123"

    }
}
test {
    dataSource {
        dbCreate = "update"
        url = "jdbc:h2:mem:testDb;MVCC=TRUE;LOCK_TIMEOUT=10000"
        username = "sa"
        password = ""
    }
}
production {
    dataSource {
        dbCreate = "update"
        url = "jdbc:postgresql://localhost:5432/app"
        driverClassName = "org.postgresql.Driver"
        username = "postgres"


        pooled = true
        properties {
           maxActive = -1
           minEvictableIdleTimeMillis=1800000
           timeBetweenEvictionRunsMillis=1800000
           numTestsPerEvictionRun=3
           testOnBorrow=true
           testWhileIdle=true
           testOnReturn=true
           validationQuery="SELECT 1"
        }
    }
}

}

您可以使用与Mysql Postgres相同的模式吗?

1 个答案:

答案 0 :(得分:1)

Hibernate为Postgres和Oracle中的所有表创建单个序列,但是每个表创建一个序列很容易。请参阅此解决方案:http://grails.1312388.n4.nabble.com/One-hibernate-sequence-is-used-for-all-Postgres-tables-td1351722.html#a1351725

要使用自定义方言,请在src / groovy或src / java中创建类。使用您想要的任何包和类名。要在Grails中注册,请在dialect的{​​{1}}块中设置dataSource属性,例如

DataSource.groovy