1

次の SQL のような IN 句を使用する必要があります

SELECT * FROM tableA WHERE colA in (1, 2,3)

EJBQLでこれを行うにはどうすればよいですか?

私は明らかに失敗した次のことを試しました:

SELECT tab FROM tableA tab WHERE tab.colA in (:colValues)

それからJavaで私はやった

query.setParameter("colValues","1,2,3")

それは私に次の例外を与えます

org.apache.openjpa.lib.jdbc.ReportingSQLException: ORA-01722: invalid number
4

2 に答える 2

5

問題は:parameter_name、SQLフラグメントで使用してから呼び出すquery. setParamter("parameter_name", values)ときにvalues、ある種のcollection. これを試して。

List<Integer> values = new ArrayList<Integer>();
values.add(1);
values.add(2);
values.add(3);

query.setParameter("colValues", values);
于 2009-05-04T19:26:03.653 に答える
1

EJBQL を使用してから長い時間が経ちましたが、これは機能するはずです。

  SELECT OBJECT(t)
       FROM Tab AS t
       WHERE t.colA IN (:colValues)

また、 colValues を文字列ではなく数値の配列として設定する必要がある場合があります

于 2009-05-04T19:24:01.553 に答える