2011-10-26 17 views
0

多対多関連を持つ2つのクラスがあります。データベースが生成されると、2つの結合テーブルuser_link_sectionsとlink_section_usersが得られます。最初の私は期待しましたが、なぜ2番目の結合テーブルが生成されたのか分かりません。 Grailsは最初のものだけを使用しています。私はgroovy/grailsのnoobieですが、これを正しく設定するためのドキュメントに従ってみました。どんな助けもありがとう!Groovy Grails多対多関連2つの結合テーブルを作成する

ここ

が私のドメインクラスの宣言です...

class User { 

    transient springSecurityService 

    // Custom Attributes 
    String firstName 
    String lastName 
    String email 
    String company 
    String phone 
    Date dateCreated 
    Date lastUpdated 

    static hasMany = [linkSections: LinkSection] 

    String username 
    String password 
    boolean enabled 
    boolean accountExpired 
    boolean accountLocked 
    boolean passwordExpired 
} 

class LinkSection { 

    String name 
    String description 
    Date dateCreated 
    Date lastUpdated 

    List links = new ArrayList() 

    static belongsTo = User 
    static hasMany = [links: Link, users: User] 

    static constraints = { 
    name blank: false 
    description(maxSize: 10000) 
    } 

    static mapping = { 
    links cascade: "all,delete-orphan" 
    } 
} 

答えて

2

多く、多くの所有側を設定してみてください:

static belongsTo = User 

これは続きますLinkSection。一方の側だけが関係を維持することを知っていることを覚えています。

もう1つのことは、マッピングの以前の試みから残っている可能性のあるテーブルを確実にクリアすることです。

+0

応答のおかげでドミトリー。私は上記のコードでbelongsToを持っています...そして、私は現在、ブートアップ時にテーブルを削除/再作成することを許可しています(私はまだ重いdevモードです)。他のアイデア? – matmer

+1

私はそれが今だったことを知っています。あなたの2番目のポイントだった - 私はドロップ/再作成の設定では、すべてのテーブルを削除すると思ったが、それは明らかにそれが存在すべきだと思うテーブルをドロップするだけです。私は余分なテーブルをクリアし、実行時にそれを再生成しませんでした。問題が解決しました! – matmer

関連する問題