代码之家  ›  专栏  ›  技术社区  ›  Timo Westkämper

JPQL中的索引元素访问

  •  3
  • Timo Westkämper  · 技术社区  · 16 年前

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

    select o from Order o where o.items[0].id = 1234
    

    我在JPA2的规格里找不到相关的东西,

    我的目标是 EclipseLink JPA

    2 回复  |  直到 16 年前
        1
  •  5
  •   Pascal Thivent    16 年前

    索引函数应该可以做到这一点(实际上我已经测试过了,它确实做到了):

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

    来自JPA2.0规范(

    INDEX函数返回一个整数 与位置相对应的值 它在有序列表中的参数。这个 标识变量表示 已指定。

        2
  •  0
  •   Community Mohan Dere    9 年前

    @Pascal Thivent的答案是正确的。为了使 INDEX() 工作你还需要添加一个 @OrderedColumn 在实体的集合字段上。

    小心,冬眠中有一个错误,这会使 索引() 不按预期工作, 它不支持 和 mappedBy 一起: JPA 2.0 @OrderColumn annotation in Hibernate 3.5