2011-12-11 2 views
1

У меня есть два класса домена: Contract и Orgainisation. Контракт имеет один 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] 

Как я могу представить эти отношения?

EDIT: Я забыл упомянуть, что контракт-бенефициарий должен быть ассоциацией «многие-ко-многим» (я хочу повторно использовать бенефициаров по контрактам).

ответ

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] 
} 
Смежные вопросы