Grails GORM картография FK, который не является ПК другой таблицы - PullRequest
1 голос
/ 13 декабря 2011

Как мне сопоставить ассоциацию GORM, где внешний ключ не является PK другой таблицы?

У меня есть следующая схема:

CREATE TABLE `supplier` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `partner_id` int(11) NOT NULL,
  `supplier_id` int(11) NOT NULL
  PRIMARY KEY (`id`)
)

CREATE TABLE `ad` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `partner_id` int(11) NOT NULL,
  `supplier_id` int(11) NOT NULL,
  `ad_id` varchar(30) NOT NULL,
  `ad_details` text NOT NULL
  PRIMARY KEY (`id`)
)

Отношение FK находится между ad.supplier_id и supplier.supplier_id ( НЕ supplier.id).


РЕДАКТИРОВАТЬ: Ответ @tim_yates ниже, кажется, частично работает.

Поскольку supplier.supplier_id не является PK таблицы supplier, поэтому возможно дублирование supplier.supplier_id.

Фактически, ключ таблицы supplierэто кортеж (supplier.supplier_id, supplier.partner_id).Как мне смоделировать это ограничение?

1 Ответ

1 голос
/ 13 декабря 2011

Этот похожий вопрос , кажется, показывает, что вы должны быть в состоянии добавить (используя advanced Gorm Mapping ):

  class Ad {
    Partner partner
    Supplier supplier
    String details

    static mapping = {
      supplier column:'supplier_id'
      details type:"text"
    }
  }

Хотя я не проверял это ...

...