EclipseLink查询方法生成额外的嵌套括号 - ORA-00907:缺少右括号

时间:2017-02-16 14:38:12

标签: sql spring oracle jpa eclipselink

我的用户表上有一个简单的Spring JPA查询方法,可以通过PK一次返回多个用户:

List<AppUser> findByUserIdIn(Collection<Long> userIds);

当我用2个长号的集合调用它时,我收到此错误:

java.sql.SQLSyntaxErrorException: ORA-00907: missing right parenthesis

EclipseLink生成的查询是:

SELECT 
    USER_ID, EMAIL_ADDRESS, EXEMPT, FIRST_NAME, LAST_NAME, USER_ACTIVE 
FROM 
    APP_USER 
WHERE 
    (USER_ID IN ((?, ?)))

当我将其复制到SQL Developer并为参数添加两个long值时,我得到了相同的错误。如果我删除值周围的额外括号,如下所示:

    (USER_ID IN (?, ?))

查询运行正常。

问题:

  1. 为什么Oracle关心额外的嵌套?不应该是相同的逻辑查询吗?
  2. 更重要的是,如何让Spring / EclipseLink停止生产?

0 个答案:

没有答案