我曾尝试在另一个问题中提出这个问题,但我可能已经提供了太多细节。
我正在使用 Grails 和多个数据源。如果您想使用服务来声明数据源,那对我来说根本不起作用。
static datasource = "db1"
无论如何,这在 Grails 服务中对我不起作用
感谢您的任何帮助/建议。
== 我正在编辑它以包含我的 Datasource.groovy
现在,如果我为我的第二个数据库使用域对象上的静态映射,这很好。但是,我希望服务决定必须写入哪个数据库,因此我希望服务数据源属性与文档中的一样。
如果我声明我的域对象使用“所有”数据源,则服务将写入默认数据源,尽管我设置了
静态数据源 = "db21"
如果我声明我的域对象使用“db1”数据源,服务将写入 db1 数据源
- 如果我声明 2,3...N 个数据源,看起来服务只会写入默认数据源或我在域 groovy 文件中声明的数据源。文档说我应该能够使用服务来选择数据源。
===============编辑==============
dataSource {
pooled = true
driverClassName = "org.h2.Driver"
username = "sa"
password = ""
}
hibernate {
cache.use_second_level_cache = true
cache.use_query_cache = true
cache.region.factory_class = 'net.sf.ehcache.hibernate.EhCacheRegionFactory'
}
// environment specific settings
environments {
development {
dataSource {
dbCreate = "validate"
url = "jdbc:h2:devDb;MVCC=TRUE"
}
dataSource_db1 {
dbCreate = "validate"
url = "jdbc:h2:dev1Db;MVCC=TRUE"
pooled = true
driverClassName = "org.h2.Driver"
username = "sa"
password = ""
}
}
test {
dataSource {
dbCreate = "update"
url = "jdbc:h2:mem:testDb;MVCC=TRUE"
}
}
production {
dataSource {
dbCreate = "update"
url = "jdbc:h2:prodDb;MVCC=TRUE"
pooled = true
properties {
maxActive = -1
minEvictableIdleTimeMillis=1800000
timeBetweenEvictionRunsMillis=1800000
numTestsPerEvictionRun=3
testOnBorrow=true
testWhileIdle=true
testOnReturn=true
validationQuery="SELECT 1"
}
}
}
}