为连接到另一个域的复合主键的外键创建Grails域映射

为连接到另一个域的复合主键的外键创建Grails域映射,grails,groovy,Grails,Groovy,如何将Grails域的两列(也是它的复合主键)引用到另一个域类的复合主键?在这种情况下,CEO到机构和机构到分支机构之间存在一对一的关系 我可以轻松地将CEO映射到Agency,因为它只涉及一列:CEO.id==Agency.CEO\u id。但我无法使用这两列将分支机构映射到代理机构:Agency.id==Branch.Agency\u id和Agency.main\u Branch\u id==Branch.Branch\u id class CEO { ..... } class

如何将Grails域的两列(也是它的复合主键)引用到另一个域类的复合主键?在这种情况下,
CEO
机构
机构
分支机构
之间存在一对一的关系

我可以轻松地将
CEO
映射到
Agency
,因为它只涉及一列:
CEO.id==Agency.CEO\u id
。但我无法使用这两列将分支机构映射到代理机构:
Agency.id==Branch.Agency\u id和Agency.main\u Branch\u id==Branch.Branch\u id

class CEO {
    .....
}

class Agency {
    .....
    CEO ceo
    Branch mainBranch

    static mapping = {
        .....
        ceo column: 'ceo_id'
        /* Tried using this mapping but it doesn't work
        mainBranch {
            agencyId column: 'id',
            branchId column: 'main_branch_id'
        }
        */
        .....
    }
}

class Branch {
    .....
    Integer agencyId
    Integer branchId

    static mapping = {
        .....
        id composite: ['agencyId', 'branchId']
        .....
    }

    static constraints = {
        .....
        branchId unique: 'agencyId'
        .....
    }
}

请尝试在代理类中使用以下技巧:

 class Agency {
     .....
     CEO ceo
     Branch mainBranch

     static mapping = {
     .....
     ceo column: 'ceo_id'
     columns {
        mainBranch {
            column name: "FirstName"
            column name: "LastName"
        }
     }
 .....
 }
参考is-第6.5.2.5节复合主键