GORM ID生成和belongsTo关联?

时间:2010-05-19 22:56:03

标签: database-design grails groovy gorm relational-database

我有两个域名:

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表中定义'code_summary_id'作为主键,并在code_set_detail表中映射'code_summary_id'。

如何在表中定义主键,并将此键映射到另一个表?

1 个答案:

答案 0 :(得分:1)

从您的Groovy代码中,每个CodeSetDetail都有许多CodeSummary个与之关联的对象。在DB中执行此操作的方法是让code_summary表的每一行标识与code_set_detail表关联的行。你说:

  

总结一下,我想定义   'code_summary_id'作为主键   code_summary表和map   code_set_detail中的'code_summary_id'   表

如果code_summary_id表中有code_set_detailcode_set_detail中的每一行都可以与code_summary表中最多一行相关联,这意味着在Groovy中每个CodeSetDetail对象最多可以指向一个CodeSummary个对象。这就是你想要的吗?