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

谢谢,

吉姆

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 回答