1

EJB-QLでは次のようなクエリを作成しようとしています。

SELECT * 

FROM table 

WHERE id IN ([id1],[id2],[id3],...);

これはoracleまたはmysqlの通常のクエリですが、EJB-QLでパラメータをリストとして設定するにはどうすればよいですか?

SELECT o

FROM ClassName

WHERE ClassNameId IN (List<Long> listOfIds);

これを行う方法はありますか?

さらに重要なことは、これはリスト内のIDごとに個別のクエリを実行するよりも効率的でしょうか?

任意の提案をいただければ幸いです。

編集:わかりやすくするために、IDのリスト(テーブル全体ではなく、別のテーブルの内容ではなく、任意のIDのリスト)に基づいて複数の行を返すように1つのクエリを実行しようとしています。通常の検索クエリを複数回(リスト内のIDごとに1回)実行するのではなく、このクエリを1回実行できることを望んでいます。

ありがとう、

ジム

4

2 に答える 2

2
String queryStr = "select o from ClassName o where o.classNameId IN :ids";

Query query = entityManager.createQuery("queryStr");
List<Long> listOfIds = getIds();
query.setParameter("ids", listOfIds);

List<ClassName> classNameList = (List<ClassName>) query.getResultList();
于 2010-11-15T10:48:07.517 に答える
0

私はEJB-QLの専門家ではありません。ここの例が役立つかもしれません。

SELECT OBJECT (o) FROM Order AS o IN (o.lineItems) li
WHERE li.quantity = ?1
于 2010-11-02T17:41:54.940 に答える