2011-12-12 71 views
1

如何映射一個GORM關聯,其中的外鍵不是另一個表的PK?Grails GORM映射FK不是另一個表的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_idsupplier.supplier_id之間(supplier.id)。


編輯:下面@tim_yates的答案似乎是部分工作。

由於supplier.supplier_id不是supplier表的PK,因此supplier.supplier_id可能被複制。

實際上,supplier表的關鍵是元組(supplier.supplier_id,supplier.partner_id)。我如何模擬這個約束?

回答

1

This similar question似乎表明,你應該能夠(使用advanced Gorm Mapping)補充:

class Ad { 
    Partner partner 
    Supplier supplier 
    String details 

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

雖然我沒有測試過這...

+0

我已經試過這和編輯上面我的問題。 – ryanprayogo