【问题标题】:Indexed element access in JPQLJPQL 中的索引元素访问
【发布时间】:2023-12-10 15:59:01
【问题描述】:
是否可以像HQL 那样在 JPQL 中进行索引元素访问:
select o from Order o where o.items[0].id = 1234
我在 JPA 2 规范中找不到相关内容,
我的目标是EclipseLink JPA,所以如果您想出一个 EclipseLink 解决方案,那也没关系,尽管首选 JPQL 标准解决方案。
【问题讨论】:
标签:
hibernate
jpa
hql
eclipselink
jpql
【解决方案1】:
INDEX 函数应该可以解决问题(实际上我测试过它确实如此):
SELECT o
FROM Order o JOIN o.items i
WHERE i.id = 1234
AND INDEX(i) = 0
来自 JPA 2.0 规范(4.6.17.2.2 算术函数):
INDEX 函数返回一个整数
对应位置的值
它的参数在有序列表中。这
INDEX 函数只能应用于
标识变量表示
订单列具有的类型
已指定。