2011-12-11 101 views
1

我有两个域类:ContractOrgainisation。合同有一个contractor(这是Orgaisation的实例)和许多/一个/无beneficiaries(也是Orgaisation的实例)。我如何模拟这些关系?我想Contract自己既关系,这样我可以这样做:两个域对象之间的多重关系

contractInstance = new Contract() 
contractInstance.addToBeneficiaries(name: 'A Company') 
contractInstance.addToBeneficiaries(name: 'Other Company') 
contractInstance.contractor = new Orgaisation('Antoher Company') 
contractInstance.save() 

我尝试了一些东西,但一直得到错误(瞬时值,对于许多一对多的关系等没有所属的类...)合同

static belongsTo = [contractor:Organisation] 
static hasMany = [beneficiaries:Organisation] 

orgainisation

static hasMany = [contractorContracts:Contract, beneficiariesContracts:Contract] 

我如何表达这些关系?

编辑:我忘了提及合同 - 受益人应该是一个多对多的协会(我想重新使用合同的受益人)。

回答

1

我的解决方案是使用描述性名称来明确M:M加入类。在你的情况,似乎我们可以做一个类ProvidedService或类似的东西,并有:

Contract { 
    static belongsTo = [contractor: Organization] 
    static hasMany = [benefits: ProvidedService] 
} 
Organization { 
    static hasMany = [contractorContracts: Contract, receivedServices: ProvidedService] 
} 
ProvidedService { 
    //Feasibly there could be differences in the service provided to each beneficiary of a contract which could go in here. 
    static belongsTo = [contract: Contract, serviceRecipient: Organization] 
} 
相关问题