2009-07-22 4 views
1

これは簡単に答えることができればうれしいです。私はこの情報を持っているプレイヤーと呼ばれるのGrailsでクラスを作成しました:明確化のためGrailsコントローラクラスの静的な "hasOne"プロパティの使用

class Player { 
String steamId 
String name 
String portrait 
static hasMany = {playerStatistics:PlayerStatistics} 
static hasOne = {playerForumProfile:PlayerForumProfile} 
} 

、プレーヤーオブジェクトは、1つのPlayerForumProfileオブジェクトを持つことができますが、プレイヤオブジェクトは、常に PlayerForumProfileのオブジェクトの前を作成されます。私の問題は、PlayerForumProfileクラスのコントローラ内の「hasOne」プロパティに関連付けられたplayerForumProfileオブジェクトにアクセスすることです。 playerForumProfileとしてそのようなプロパティが存在しない

def playerForumProfileInstance = new PlayerForumProfile() 
    def playerInstance = Player.get(params.id) 

    playerForumProfileInstance = playerInstance.playerForumProfile 

私はこれをしようとするが、Grailsは私に言って、エラーをスローし、playerForumProfileInstance変数にplayerInstanceオブジェクトに関連付けられているPlayerForumProfileオブジェクトを引っ張っにつながる:私はこれを行うことは想定していました。このような方法でhasOneプロパティのオブジェクトにアクセスすることは可能ですか、それとも別のことをする必要がありますか?

編集:それはのbelongsTo宣言していたが、これは私のアプリを実行するときに、nullポインタ例外が生じ保たれて、それはplayerForumProfileという変数と編集PlayerForumProfileを含めて、私はまた、プレイヤーのクラスを変更してみました。

編集:もう少し詳しく、最初から新しいgrailsアプリケーションを作成し、Grailsのドキュメントに表示される方法と関係を作成しました。問題なく実行されました。新しいアプリを作成し、ファイルをコピーします。

+0

は、私はそれを再構築するつもりです見て。うまくいけば、これはエラーを解決します。 – Neitherman

+0

実際、プログラムを最初から再構築することで問題は解決しました。 – Neitherman

答えて

3

この回答は、もはやgrails 2.X以降では正しくありません。元々答えられたのは2009年でした。

GORMにおける「hasOneの」プロパティは、それがいずれかのbelongsToだ、ありません。

static belongsTo = [playerForumProfile: PlayerForumProfile] 

または属性名の普通の型指定された定義belongsToので暗示カスケード関係がない場合:

PlayerForumProfile playerForumProfile 

詳細については、one-to-one GORM documentationを参照してください。

+0

ドキュメントを確認しましたが、PlayerクラスにPlayerForumProfileオブジェクト(プロパティとして)を配置するときに、そのサンプルを試してアプリケーションを実行すると、nullポインタが取得されます。 – Neitherman

+0

これは技術的に正しい答えです。 – Neitherman

関連する問題