我有两个域:

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_cartridges_id,cartridge_id)

我不想有code_set_cartridge表,但保持关系:
代码集-> 1:n->墨盒

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

可以在没有中间表的情况下使用GORM进行映射?

最佳答案

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

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'
   }
}

10-08 02:36