Grails GORM映射FK不是其他表的PK

时间:2011-12-12 20:54:54

标签: database grails groovy relational-database gorm

如何映射外键不是另一个表的PK的GORM关联?

我有以下架构:

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_idsupplier.supplier_id之间( supplier.id)。


编辑:以下@tim_yates的回答似乎部分有效。

由于supplier.supplier_id不是supplier表的PK,因此supplier.supplier_id可能会重复。

实际上,supplier表的关键是元组(supplier.supplier_idsupplier.partner_id)。如何对此约束进行建模?

1 个答案:

答案 0 :(得分:1)

This similar question似乎表明你应该能够添加(使用advanced Gorm Mapping):

  class Ad {
    Partner partner
    Supplier supplier
    String details

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

虽然我没有测试过这个......