如何将Grails Domain的两列(也是它的复合主键)引用到另一个Domain类的复合主键?在本场景中,CEO
到Agency
、Agency
到Branch
是一一对应的关系。
我可以很容易地映射CEO
到Agency
,因为它只涉及一列:CEO.id == Agency.ceo_id
。但是我不能使用这两列将Branch
映射到Agency
: Agency.id == Branch.agency_id and Agency.main_branch_id == Branch.branch_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"
}
}
.....
}
参考在这里-第6.5.2.5节复合主键