2

我有两个域:

class CodeSet { 

  String id
  String owner
  String comments
  String geneRLF
  String systemAPF

  static hasMany = [cartridges:Cartridge]

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

    static mapping = {
      table 'code_set'
      version false
      columns {
         id column:'code_set_id', generator: 'assigned'
         owner column:'owner'
         comments column:'comments'
         geneRLF column:'gene_rlf'
         systemAPF column:'system_apf'
      }
  }

and :

class Cartridge {

  String id
  String code_set_id
  Date runDate

  static belongsTo = CodeSet

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

      static mapping = {
      table 'cartridge'
      version false
      columns {
         id column:'cartridge_id', generator: 'assigned'
         code_set_id column:'code_set_id'
         runDate column:'run_date'
      }
  }

实际上,使用这些模型,我得到了表:
-code_set,-cartridge,
-
和表:code_set_cartridge(两个字段:code_set_cartridges_id,cartridge_id)

我想没有 code_set_cartridge 表,但保持关系:
code_set --> 1:n --> 墨盒

换句话说,如何在没有中间表的情况下保持 code_set 和墨盒之间的关联?(使用 code_set_id 作为 code_set 中的主键,使用 code_set_id 作为盒式磁带中的外键)。

不用中间表就可以用 GORM 映射?

4

2 回答 2

5

如果您更改 belongsTo 声明,它会起作用。您可以在 belongsTo 中命名实例,而不是仅仅引用 CodeSet 的 id,您将获得对实例的引用并避免连接表。我还删除了冗余映射:

class Cartridge {

   String id
   Date runDate

   static belongsTo = [codeSet: CodeSet]

   static mapping = {
      version false
      id generator: 'assigned'
      codeSet column:'code_set_id'
   }
}

class CodeSet { 

   String id
   String owner
   String comments
   String geneRLF
   String systemAPF

   static hasMany = [cartridges:Cartridge]

   static mapping = {
      version false
      id generator: 'assigned'
      geneRLF column:'gene_rlf'
      systemAPF column:'system_apf'
   }
}
于 2010-05-14T20:46:34.797 回答
1

我使用的是双向一对多模式,但我也可以使用单向模式。

所以对于域代码集,修复是:

class CodeSet { 

  String id
  String owner
  String comments
  String geneRLF
  String systemAPF

  Cartridge cartridge

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

    static mapping = {
      table 'code_set'
      version false
      id column:'code_set_id', generator: 'assigned'
      columns {
         owner:'owner'
         comments:'comments'
         geneRLF:'gene_rlf'
         systemAPF:'system_apf'
      }
  }

但是,我仍然对双向和单向模式感到困惑?
有人,可以给我一个很好的例子(帮助我理解)?谢谢

于 2010-05-14T20:36:04.890 回答