GORM一对多关系跨多个数据源

时间:2015-11-02 20:52:20

标签: grails gorm

我看到有一种策略可以跨不同数据库进行一对一的域对象映射。但我试图将两个域对象关联在不同的数据源中,并且具有一对多的关系。

class DomainA {
    // default data source
}

class DomainB {
    static hasmany = [domainA: DomainA]

    static mapping = {
        datasource 'ds2'
    }
}

有关如何使这项工作的任何建议?或者解决方法?

1 个答案:

答案 0 :(得分:0)

找到了解决方案,它运作良好。解决方案是在您拥有的架构中创建连接表。 E.g。

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 
    }
}