11

リストを返す2つのSQLクエリがあります。私のコード:

List<String> list = em.createNativeQuery(query1).getResultList();
list.addAll(em.createNativeQuery(query2).getResultList());

私が持っているもの: 2 つのサブリストを持つリスト - query1 のサブリストと query2 のサブリスト。
必要なもの: query1 と query2 のすべての要素を含む 1 つのリスト。
何か案が?


問題は最初のSQLクエリにありました。結果はオブジェクト配列に追加されていたため、 addAll メソッドは私の問題を解決しません。

4

3 に答える 3

10

addAll() は機能します。両方のクエリからデータを取得するコードは正しいです

于 2013-06-12T12:51:20.530 に答える
0

実際にリストのリストを作成したい、つまり:

List<List<String>> listOfLists = ...;

この方法で定義された同じリストに、文字列と文字列のリストの両方を格納することはできません。実際にこれを行いたい場合は、定義するだけList<Object>で、任意のタイプの要素をそこに格納できます。ただし、あまりお勧めできません。ジェネリックは、コンパイル時にこのような使用を防ぐために Java に導入されました。

したがって、おそらく本当に必要なのは、文字列のリストのリストを作成してから、文字列のリストを返し、結果を最初のリストに追加するクエリを実行することです。

List<List<String>> list = new LinkedList<List<String>>();
list.addAll(em.createNativeQuery(query1).getResultList());
list.addAll(em.createNativeQuery(query1).getResultList());

ところで、このアプローチもお勧めできません。通常、n>1 の n 次元コレクションを作成する場合は、コレクションやその他のものを保持する別のコンテナー クラスを作成してから、このクラスのインスタンスを格納する 1 次元コレクションを作成する必要があります。

于 2013-06-12T12:31:09.147 に答える