GORM 跨多个数据源的一对多关系
GORM One to Many relationship across multiple datasources
我看到有一种跨不同数据库的领域对象一对一映射的策略。但我正在尝试关联两个位于不同数据源中且具有一对多关系的域对象。
class DomainA {
// default data source
}
class DomainB {
static hasmany = [domainA: DomainA]
static mapping = {
datasource 'ds2'
}
}
关于如何使这项工作有什么建议吗?或者解决方法?
找到了解决这个问题的方法,效果很好。解决方案是在您拥有的模式中创建一个连接 table。
例如
class DomainA {
// default data source
}
class DomainB {
List<DomainA> domainAList
static transients = ['domainAList']
static hasmany = [domainAIds: Integer]
static mapping = {
datasource 'ds2'
domainAIds joinTable: [name: 'DOMAINB_DOMAINA', key: 'DOMAINB_ID', column: 'DOMAINA_ID']
}
List<DomainA> getDomainAList(){
domainAList = domainAIds.collect { DomainA.get(it) }
domainAList
}
}
我看到有一种跨不同数据库的领域对象一对一映射的策略。但我正在尝试关联两个位于不同数据源中且具有一对多关系的域对象。
class DomainA {
// default data source
}
class DomainB {
static hasmany = [domainA: DomainA]
static mapping = {
datasource 'ds2'
}
}
关于如何使这项工作有什么建议吗?或者解决方法?
找到了解决这个问题的方法,效果很好。解决方案是在您拥有的模式中创建一个连接 table。 例如
class DomainA {
// default data source
}
class DomainB {
List<DomainA> domainAList
static transients = ['domainAList']
static hasmany = [domainAIds: Integer]
static mapping = {
datasource 'ds2'
domainAIds joinTable: [name: 'DOMAINB_DOMAINA', key: 'DOMAINB_ID', column: 'DOMAINA_ID']
}
List<DomainA> getDomainAList(){
domainAList = domainAIds.collect { DomainA.get(it) }
domainAList
}
}