0

私のプロジェクトでは、いくつかのモデルに問題があります。コントローラーでは、モデル内のオブジェクト (ManyToOne 関係) を次のように呼び出します。

Logger.debug("my model %s", myModel.relObject);

これは、その relObject の toString を出力します。私のrelObjectは次のように定義されています:

public class RelObject GenericModel{   
@Id 
@GeneratedValue(strategy= GenerationType.AUTO) 
@Column(name="My_ID")

public Long myId;    

@Column(name="MY_NAME",  length=24, nullable=false,  unique=false)
@Required
@MaxSize(value=24)
public String myName;   

public toString(){
    return myName;
}    
}

ただし、そのロガーの下にこれをコーディングすると:

Logger.debug("my model's id %s", myModel.relObject.myId);

null を送信します。これは、私のプロジェクトのモデルの多くで発生しています。これを解決できる理由と方法についてのアイデアはありますか?

4

1 に答える 1

0

何が間違っていたのか、まったく意味がなかったようです。play Framework の Controller クラスにバグがあるようです。具体的には、1 つのパラメーター (Future オブジェクト) のみを受け取る await メソッドで。このメソッドは、別の Thread を作成するために Promise などの Future オブジェクトを使用して、アプリケーション全体をブロックしないようにするときに使用されます。

プロジェクトの任意の場所でこのメソッドを使用すると、プロジェクトをクリーンアップせずに 2 回目にコンパイルするまで正しくコンパイルされず、モデルの動作が異常になります。

スタック オーバーフローと Googlecode Play フォーラムに別のトピックを投稿し、それらの議論へのリンクをここに貼り付けます。

于 2013-04-15T14:49:34.243 に答える