2016-03-31 1 views
0

私は別に2つのクエリを実行し、コードの下のような単一のリストに追加する必要があり

List<BojaClass> results1 = new ArrayList<>(); 
    List<BojaClass> results2 = new ArrayList<>(); 
    String sql1 = "my query 1"; 
    String sql2 = "my query 2"; 
    results1 = jdbcTemplate.query(sql1, new Object[]{1,2}, new BeanPropertyRowMapper<BojaClass>(BojaClass.class)); 
    results2 = jdbcTemplate.query(sql2, new Object[]{1,2}, new BeanPropertyRowMapper<BojaClass>(BojaClass.class)); 
    results1.add((BojaClass) results2); 

しかし、私は例外 "とjava.lang.ClassCastExceptionを取得しています: java.util.ArrayListをcom.myclass.BojaClassにキャストすることはできません。結果2の値は結果1に追加されません。

どこが間違っていますか?

+1

results1.addAll – Tokazio

+1

'results1.addAll(results2); ' –

答えて

2

Listインターフェイスのaddメソッドを使用しており、1つの要素だけがリストに追加されます。代わりに別のリストを追加するaddAllメソッドを使用してください。

ブールjava.util.List.add(E電子)

このリスト(オプション 操作)の最後に、指定された要素を追加します。

ブールjava.util.List.addAll(コレクションC)

は、それらが指定されたコレクションので返されていることを ために、このリストの最後に指定されたコレクション内のすべての要素を追加イテレータ (オプション)操作が の進行中に 指定されたコレクションが変更された場合、この操作の動作は未定義です。 (指定されたコレクションがこのリスト であれば、これが発生することに注意してください、それが空ではないです。)あなたの鋳造中にエラーが

+1

キャストを削除する:(BojaClass)results2 –

0

あり:

results1.add((BojaClass) results2); 

上記のように変更する必要があります。

results1.add((List<BojaClass>) results2); 

ご希望の問題が修正されますようお願いいたします。

関連する問題