2010-11-25 11 views
0

私は3つのドメインクラスを持っています:Article、User &言語。すべての記事は、指定された言語でユーザーによって書き込まれます。 、(ユーザ - の記事:1 - 多くの)Grails belongsTo usage

私は試してみてください。ここで

class Product { 

    static belongsTo = [user:User] 
    static belongsTo = [language:Language] 

    ... 
} 

class User { 

    static hasMany = [products:Product] 

    ... 
} 

class Language { 

    static hasMany = [products:Product] 

    ... 
} 

は問題だ:grails generate-allはのためのすべてのコントローラ&ビューを作成することができますので、関係が( - - 多くの1言語条)ですすべての3つのドメインクラスですが、どのビューにもプロパティーが入力されていません。テキスト入力なし、コンボボックスなし、エラーメッセージなし、... Product、Language、Articleのidフィールドのみ。

"belongsTo"を& "hasMany"にドロップすると、問題なくすべてのビューが作成されるため、エラーがどのように関係を使用しているかが分かります。

私は間違っていましたか?

答えて

0

Articleにuser(キャメルケース)のプロパティを明示的に追加することができます。足場には足場が生成されます。 また、明示的に宣言されたプロパティだけでなく、足場テンプレート(grails [install-templates][1]以降)を調整することもできます。

+0

ありがとうございます。今では、(Article - User)関係のためにbelongsToとhasManyを使用して、あなたが言ったように、言語プロパティをProductに入れます。どうやってこの仕事をしてくれたらいいですか?ドキュメントを読むと、belongsToが(1 - 多くの)関係にも適用されます。 –

+0

hasMany/belongsToに明示的なプロパティを追加しても、1)フィールドタイプを制御することができます。つまり、暗黙的に 'hasMany'が追加されたSet の代わりにList を使用します。 Class.getDeclaredFields()には表示されません。 UI生成の仕組みを知りたい場合は、 'grails install-templates'を実行してください。その後、src/templates/scaffoldingのテンプレートを調べて削除することができます。 –