2

私は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、
-カートリッジ、
-およびテーブル:code_set_cartridge (2 つのフィールド: code_set_cartridges_id、カートリッジ_id)

私は code_set_cartridge テーブルを持ちませんが、関係を維持したいと思います:
code_set --> 1:n --> カートリッジ

つまり、中間テーブルなしで code_set とカートリッジの関連付けを維持するにはどうすればよいですか? (code_set_id を code_set の主キーとして使用し、code_set_id をカートリッジの外部キーとして使用)。

GORMによるマッピングは中間テーブルなしで行うことができますか?

4

2 に答える 2

5

membersTo 宣言を変更すると機能します。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'
   }
}
于 2010-05-14T20:46:34.797 に答える
1

双方向の 1 対多モードを使用していましたが、単方向モードも使用できます。

したがって、ドメイン CodeSet の場合、修正は次のとおりです。

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 に答える