2011-10-26 16 views
0

私は2つのテーブルを持っています、データ、私は変更中のシステムでdata_modified。私は何で終わる必要があることはdata_modifiedテーブル内のレコードごとに一つのクラスでこの休止状態でカスタムマップを設定

compareClass{ 
    field1 = data 
    field2 = data_modified where id=data.id 

のように見えるクラス}

です。

は、私はこの

select * from data2009.data s, data2009.data_modified m where m."original_data_id" = s."id" 

のような単一のクエリと似て行うことができますが、私が言ったように、私はそれが上記のクエリが生成する結果セットの代わりに、上記のクラスのオブジェクトを返すようにしたいと思います。誰かが正しい方向に私をポイントしてくださいすることができ

答えて

0

あなたはhibenateでTransformersを使用してクエリ結果からカスタムDTOを作成することができますしてください。このHibernateのマッピングを達成します。例については、hereを参照してください。

0

書き込み、元のデータと一緒に、すべての変更されたデータを返すクエリを実行します。

Query q = session.createQuery("select m from ModifiedData m" 
          + " inner join fetch m.originalData"); 
List<ModifiedData> list = q.list(); 

を次に返されたリストを反復処理し、すべての結果を比較インスタンスを構築:

List<Comparison> result = new ArrayList<Comparison>(list.size()); 
for (ModifiedData m : list) { 
    result.add(new Comparison(m, m.getOriginalData())); 
} 

ModifiedDataインスタンスは元のDataインスタンスを保持しているので、Comparisonクラスは実際には役に立ちません。 ModifiedDataのリストを直接返すことができます。