参考文档: http://docs.grails.org/3.3.3/guide/single.html#multipleDatasources
参考文档: http://docs.grails.org/3.3.3/guide/single.html#upgrading
https://github.com/grails/grails-core/issues/10650
1.基本数据源配置如文档描述
2.使用:
ZipCode.auditing.get(42)会报No Session found for current thread错
按文档使用方式在control中应用的时候有两种方式:
1.方法上添加
@Transactional("auditing")
@Transactional("auditing")
def test(){
def record = request.JSON?:params
zipCode = ZipCode.auditing.get(42)
}
这个时候再使用就不会报错
2.有时候项目有多个数据源,需要前端传参进行判断,此时可以做下简单处理,使用 withTransaction
@Transactional
def test(){
def record = request.JSON?:params
if(record.db=="main"){
record.db = "DEFAULT"
}
def zipCode
ZipCode[record.db].withTransaction {
zipCode = ZipCode[record.db].get(42)
}
}
在service中应用的时候会报autowrie错误,是因为grails3.3.x Domain Autowiring Disabled, 所以只要在domain class中手动启用即可:
static mapping = {
autowire true
datasource 'ALL'
version (false)
或者:
grails-app/conf/application.groovy
grails.gorm.default.mapping = {
autowire true
}