【问题标题】:Does EclipseLink support ORDER BY FIELD(field, :values)EclipseLink 是否支持 ORDER BY FIELD(field, :values)
【发布时间】:2014-01-27 16:14:31
【问题描述】:

MySQL 支持如下查询:

SELECT id FROM users WHERE id IN(3,4,8,1) ORDER BY FIELD(id, 3,4,8,1);

EclipseLink 是否支持此查询(不恢复为原生查询)?

当我尝试以下操作时:

Select id from User user where user.id in :ids ORDER BY FIELD(user.id, :ids)

我收到错误:

Syntax error parsing the query ... line 1, column 98: unexpected token [(].

【问题讨论】:

  • 显然这不是有效的 JPQL,因此没有(非便携式)供应商扩展,任何 JPA 实现都不会“支持”它。 JPQL 确实允许“FUNCTION”,你可以把你的 FIELD 东西放进去(那是可移植的 JPQL)

标签: jakarta-ee jpa eclipselink jpql


【解决方案1】:

ORDER BY FIELD(field, :values) 不受 JPA (JQL) 或 EclipseLink 支持。

JPA 确实提供了一种执行本机查询的机制。您可以创建一个本机查询来调用与您的描述中类似的查询,但是,它当然是不可移植的。

【讨论】:

    猜你喜欢
    • 2011-11-18
    • 2012-04-12
    • 1970-01-01
    • 1970-01-01
    • 2020-08-31
    • 2020-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多