2011-12-27 4 views
0

私は(理論的に)単純なhasMany関係をドメインクラス内に作成しています。私は2つのテーブルの間に外来キーの関係があります。次のように表1のドメインオブジェクトは、次のとおりです。Grails has beans beansを作成する際に多くのエラーが発生する

Functionality{ 
String id 
static hasMany = [functionalityControllers:FunctionalityController] 
static mapping = 
{ 
    table 'schema.functionality' 
    id column:'FUNCTIONALITY_NAME', type:'string', generator:'assigned' 
    version false 
} 
} 

とドメインオブジェクト2

FunctionalityController 
{ 
    String id 
    String functionalityName 
    String controllerName 

    static mapping = 
    { 
    table 'schema.functionality_controller' 
    id column:'id', type:'string', generator:'assigned' 
    version:false 
    } 
} 

私が午前問題は、私はFunctionalityドメインオブジェクトの内部でhasManyラインを持っている場合、アプリは」勝ったということですt start(アプリと統合テストの両方)。エラーはorg.springframework.beans.factory.BeanCreationExceptionで、Invocation of init method failed; nested exception is java.lang.NullPointerExceptionにつながります。

ご協力いただければ幸いです。 UPDATE: * ワーキングドメイン *:

class Functionality { 

String id 
static hasMany = [functionalityConts:FunctionalityCont] 
static mapping = 
{ 
    table 'schema.functionality' 
    id column:'FUNCTIONALITY_NAME', type: 'string', generator: 'assigned' 
    functionalityConts(column:'functionality_name') 
    version false; 
} 
} 

class FunctionalityCont { 

String id 
String functionalityName 
String controllerName 
static belongsTo = [functionality: Functionality] 
static contraints = { 

} 
static mapping = 
{ 
    table 'schema.functionality_controller' 
    id column:'id', type: 'string', generator: 'assigned' 
    functionality(column:'FUNCTIONALITY_NAME') 
    version false; 
} 
} 

答えて

3

まあ2つの物事...

1.I'mないように注意してくださいしかし、私は接頭辞を使用して、ドメインクラスのコントローラは「多分Grailsの設定を超えると、慣例により慣例であるためである、責任があることを推測しますコントローラークラスはコントローラーのプレフィックスで終了し、コントローラーフォルダーにあります。この場合は混乱します。

2.このGORMでは、オブジェクト間の関係は単方向または双方向にすることができます。どちらの場合も、さまざまな実装がありますが、Functionalityクラス(btwには 'class'という単語がありません)は、hasManyを通じてFunctionalityControllerと適切な関係にありますが、Functionalあなたが実装することができるようにtyControllerは、関係を知っていません:

// For unidirectional 
static belongsTo = Functionality 
// For bidirectional 
static belongsTo = [functionality:Functionality] 
// Or put an instance of Functionality in your domain class, 
// not common, and you manage the relationship 
Functionality functionality 

だから、この答えの前に、私は変更なしでFunctionalityContすることFunctionalityControllerを変更した よろしく

+0

...それをチェックアウトし、plsは私達に教えて。また、上記の手順を試してみましたが、私はGreggの答えに投稿する別のエラーを取得します。 – Joseph

+0

正解であれば100%確信していませんが、私は昨日同じことを幸運で試してみたと思っています。それは、今のところ期待通りに働いているように思えます。 – Joseph

+0

最後に私が抱えている問題:生成されているSQLは、存在しない列を参照しています。使用する列/フィールドを指定するにはどうすればよいですか? – Joseph

3

を増やしてみてください

静的belongsToの= [機能:機能]

あなたFunctionalityControllerクラスへ。私は、あなたが見せているものよりもあなたの誤りが多いと思っていますが、一般的には、それを所有する側が必要です。以来、それは外来キーが実際に生きる場所です。

関連する問題