سؤال

أحتاج إلى استخدام جملة IN مثل SQL التالي

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

كيف يمكنني القيام بذلك في EJBQL؟

لقد حاولت ما يلي، والذي فشل بوضوح:

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

ثم فعلت ذلك في جافا

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

هذا يعطيني الاستثناء التالي

org.apache.openjpa.lib.jdbc.ReportingSQLException: ORA-01722: invalid number
هل كانت مفيدة؟

المحلول

والمشكلة هي عند استخدام :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);

نصائح أخرى

لقد مر وقت طويل منذ أن قمت بـ EJBQL، لكن هذا يجب أن ينجح:

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

قد تحتاج أيضًا إلى تعيين colValues ​​كصفيف من الأرقام بدلاً من سلسلة

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top