Indexed element access in JPQL

[亡魂溺海] 提交于 2019-12-06 05:19:11

The INDEX function should do the trick (actually I tested it and it does):

SELECT o
FROM Order o JOIN o.items i
WHERE i.id = 1234
AND INDEX(i) = 0

From the JPA 2.0 specification (4.6.17.2.2 Arithmetic Functions):

The INDEX function returns an integer value corresponding to the position of its argument in an ordered list. The INDEX function can only be applied to identification variables denoting types for which an order column has been specified.

cn123h

The answer of @Pascal Thivent is correct. In order to make INDEX() work you also need to add a @OrderedColumn on the entity's collection field.

Be careful, there is a bug in Hibernate, which makes INDEX() not work as expect, it doesn't support @OrderedColumn and mappedBy together: JPA 2.0 @OrderColumn annotation in Hibernate 3.5

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!