JPQL 中的索引元素访问

Tim*_*per 3 hibernate jpa hql eclipselink jpql

是否可以像在HQL中一样在 JPQL 中进行索引元素访问:

select o from Order o where o.items[0].id = 1234
Run Code Online (Sandbox Code Playgroud)

我在 JPA 2 规范中找不到相关的东西,

我这里的目标是EclipseLink JPA,所以如果你想出一个 EclipseLink 解决方案,那也没关系,尽管 JPQL 标准解决方案是首选。

Pas*_*ent 5

INDEX 函数应该可以解决问题(实际上我测试了它并且确实如此):

SELECT o
FROM Order o JOIN o.items i
WHERE i.id = 1234
AND INDEX(i) = 0
Run Code Online (Sandbox Code Playgroud)

从 JPA 2.0 规范(4.6.17.2.2 算术函数):

INDEX 函数返回与其参数在有序列表中的位置相对应的整数值。INDEX 函数只能应用于表示已为其指定订单列的类型的标识变量。