Множественные ассоциации в граалях - PullRequest
3 голосов
/ 31 октября 2009

У меня есть приложение grails с доменом Restaurant и доменом Person.

class Restaurant {
  String name

  static belongsTo = [ owner: Person ]
}

class Person {
  String name

  static hasMany = [ favoriteRestaurants : Restaurant ]
}

Моя проблема в том, что GORM создает только две таблицы, Ресторан и Персона, где у ресторана есть owner_id. Однако мне не хватает таблицы соединений, которая связывает с ним любимые рестораны человека.

Я могу понять, почему GORM делает это таким образом (двунаправленный один-ко-многим), однако я не могу понять, как сделать это так, как я хочу (1x однонаправленное один-ко-многим, 1x однонаправленное много-к-многим) -один). Полагаю, мне следует использовать mappedBy , но я не знаю, к чему это сопоставить, поскольку нет ничего, связывающего его обратно: - (

Кроме того, я изначально рассматривал следующие домены:

class Restaurant {
  String name

  static belongsTo = [ owner: Person ]
  static hasMany = [ outstandingCouponOwners : Person ]
}

class Person {
  String name

  static hasMany = [ favoriteRestaurants : Restaurant ]
}

там, где есть другое отношение один-ко-многим (и опять же, на другом конце ему нечего сопоставить)

1 Ответ

2 голосов
/ 31 октября 2009

Я думаю, вы должны использовать статическую карту mappedBy для класса домена. Подробности смотрите в нижней части раздела 5.2.1.2 справочного руководства по Grails. Может потребоваться ввести дополнительные записи в Person's hasMany: список ресторанов, принадлежащих человеку. Попробуйте следующий (полностью непроверенный) код:

class Restaurant {
  String name

  static belongsTo = [ owner: Person ]
  static hasMany = [ outstandingCouponOwners : Person ]
}

class Person {
  String name

  static hasMany = [ favoriteRestaurants : Restaurant, owns: Restaurant, coupons: Restaurant ]
  static mappedby = [ owns: 'owner', coupons: 'outstandingCouponOwners' ]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...