множественные отношения между двумя объектами домена - PullRequest
1 голос
/ 12 декабря 2011

У меня есть два класса домена: Contract и Orgainisation.Контракт имеет один contractor (который является экземпляром Orgaisation) и множество / one / none 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]

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

ПРАВКА: Iзабыл упомянуть, что бенефициар по контракту должен быть ассоциацией «многие ко многим» (я хочу повторно использовать бенефициаров по контрактам).

1 Ответ

1 голос
/ 17 января 2012

Мое решение состоит в том, чтобы сделать явным объединяющий класс 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]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...