2012-02-17 8 views
1

参考のために、私はPlayを使用しています!フレームワーク。存在しない可能性のあるオブジェクトへのJPAの関係

デバイス上のセンサーによって収集されたデータを表すJPAエンティティがあります。ここではクラス宣言の関連部分は以下のとおりです。

@Entity 
public class Data extends Model 
{ 
    @ManyToOne 
    Device dataCollector; 

    @ManyToOne 
    User user; 
} 
トラブルがある

が、私は関係なく、自分がローカルデータベースに登録されているのデバイスからデータを収集できるようにする必要があり、そのIDを持っているデバイスがあるかもしれませんIDはローカルデータベースとは関係ありません。

JPAがDataテーブルを作成する方法は、dataCollectorの列はちょうどDevice IDです。しかし、DeviceのIDを持つレコードを取得しようとすると、Deviceオブジェクトをインスタンス化できないため、例外がスローされます。

DeviceのIDをDataオブジェクトに格納するだけで問題を解決できたかもしれませんが、オブジェクトを作成するJPAのクリーンな状態を本当に楽しむことができます。 DataオブジェクトにIDのレコードがない場合、JPAにデフォルトのインスタンス化Deviceを渡す方法はありますか?

答えて

0

あなたのデータベースにないデバイスを手に入れたいのであれば、あなたが望むものを達成できないと思います。

オブジェクトをインスタンス化することはできますが、データベースにクエリを送信しようとすると失敗します。あなたが好きDeviceDataを追求し、デバイスを保存奨め行動したいのであれば、私は記事についての理解何

List<Data> dataGathered = Data.find("dataCollector = ?", theDataCollector).fetch(); 

を...

は、あなたはそれを得ましたか。あなたが試したものを手に入れませんでしたか?