gpt4 book ai didi

hibernate - 在 Grails 中配置 Postgres

转载 作者:行者123 更新时间:2023-11-29 12:22:24 25 4
gpt4 key购买 nike

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

通过分析在 Postgres 中创建的数据库,我意识到在每个表中创建的 ID 的编号不会因另一个表的更改而被重置。比如在寄存器3'Table1'中设置了ID 1到3,当插入到另一个表中的另一个类的对象时,ID应该是从那个表开始的,但是它是按照previous and 的顺序当对象保留在“table2”中而不是他的第一个 ID 开始时继续从 4 开始计数。我还注意到 Mysql 中的一些变化,因为“false”字段“boolean”是 preenchdio with“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 中相同的模式吗?

最佳答案

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 中注册它,请在 DataSource.groovydataSource block 中设置 dialect 属性,例如

dataSource {
pooled = true
dialect = com.foo.bar.MyDialect
driverClassName = ...
username = ...
password = ...
}

关于hibernate - 在 Grails 中配置 Postgres,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12850955/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com