2010-05-19 64 views
0

我有兩個領域:GORM ID生成和belongsTo關聯?

class CodeSetDetail { 

    String id 
    String codeSummaryId 

    static hasMany = [codes:CodeSummary] 

    static constraints = { 
     id(unique:true,blank:false) 
    } 

    static mapping = { 
     version false 
     id column:'code_set_detail_id', generator: 'assigned' 
    } 
} 

and : 

class CodeSummary { 

    String id 
    String codeClass 
    String name 
    String accession 

    static belongsTo = [codeSetDetail:CodeSetDetail] 

    static constraints = { 
     id(unique:true,blank:false) 
    } 

    static mapping = { 
     version false 
     id column:'code_summary_id', generator: 'assigned' 
    } 
} 

我得到兩個表列:

code_set_detail:

code_set_detail_id  
code_summary_id 

code_summary:

code_summary_id 
code_set_detail_id (should not exist)  
code_class  
name 
accession 

我想通過 'code_summary_id'(,而不是由 'code_set_detail_id')到code_set_detail表和code_summary錶鏈接。
注:'code_summary_id'在code_set_detail表中定義爲列,並在code_summary表中定義爲主鍵。總結一下,我想定義'code_summary_id'作爲code_summary表中的主鍵,並在code_set_detail表中映射'code_summary_id'。

如何定義表中的主鍵,並將該鍵映射到另一個表?

回答

1

從您的Groovy代碼中,每個CodeSetDetail都有許多與其關聯的對象CodeSummary。在DB中執行此操作的方法是使表code_summary表中的每行都標識與code_set_detail表關聯的行。你說:

綜上所述行動,我想在 code_summary表中定義 「code_summary_id」作爲主鍵,並映射 「code_summary_id」在code_set_detail 表。

如果你有code_summary_idcode_set_detail表,在code_set_detail每一行可以關聯到在最一排code_summary表,這意味着在Groovy每個CodeSetDetail對象可以指向最多一個CodeSummary對象。那是你要的嗎?

+0

我想鏈接:CodeSetDetail(codeSummaryId = TEM123)與CodeSummary(codeSummaryId = TEM123)。 – 2010-05-19 23:45:01

+0

在這種情況下CodeSetDetail只能引用一個CodeSummary。如果這就是你想從'CodeSetDetail'中刪除'String codeSummaryId'和'static hasMany = [codes:CodeSummary]'這樣的行,並且只需要一個'CodeSummary codeSummary'字段。另請參閱http://www.grails.org/GORM+-+Defining+relationships上的一對一部分 – 2010-05-20 00:14:46

+0

我可以添加使用靜態belongsTo = [codeSetDetail:CodeSetDetail],如果我想級聯刪除。謝謝。 – 2010-05-20 16:50:12