database - Grails GORM映射FK而不是另一个表的PK

标签 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)。如何建模此约束?

最佳答案

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

  class Ad {
    Partner partner
    Supplier supplier
    String details

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

虽然我还没有测试过...

关于database - Grails GORM映射FK而不是另一个表的PK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8480701/

相关文章:

groovy - 如何在groovy中截断字符串?

grails - 带有枚举的Grails JSON单元格

c++ - SOCI:栏目多了怎么处理?

grails - 在Grails 3.2.4中,具有.async.task调用的 Controller 将request.asyncStarted()设置为true,但不呈现响应

mysql - 数据库表创建——分割年龄组

grails - 贝壳和瓶盖

Grails - save() 在集成测试中因 MissingMethodExcepition 而失败

groovy - 从放置在 war 中的 groovy jar 运行 Groovy CLI

sql - INNER JOIN 和 OUTER JOIN 有必要吗?

mysql - 将我的数据结构存储在数据库中的最佳方式是什么?