EJB-QL问题如何将列表设置为如下参数:select table from table where id in(List <long> listOfIds)</long>

时间:2010-11-02 16:31:57

标签: java ejb ejbql

在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列表)。我希望能够运行此查询一次,而不是多次运行常规查找查询(对于列表中的每个ID一次)。

谢谢,

吉姆

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分:0)

我不是EJB-QL的专家。您可能会发现here中的示例很有用。

SELECT OBJECT (o) FROM Order AS o IN (o.lineItems) li
WHERE li.quantity = ?1