【问题标题】:IllegalArgumentException: Parameter with that position [1] did not exist -- LOWER & CONTAINING usageIllegalArgumentException:具有该位置 [1] 的参数不存在 -- LOWER & CONTAINING 用法
【发布时间】:2017-07-29 09:01:43
【问题描述】:

我是 Spring Data JPA 的新手。我有这个查询。 LOWER 函数和CONTAINING(case-insensitive) 是必需的。

如果我使用它,它工作正常:

findByCityContainsAndAreaContainsAndType(String city,String area, String type);

使用@Query 的原因是我想使用连接。但是 ('%?1%') 似乎有问题。 不知道如何实现。

@Query(value=" select * from Agreement where LOWER(city) like LOWER('%?1%') and LOWER(AREA) like LOWER('%?2%') and type=?3", nativeQuery = true)
public List<Agreement> getAgreementDetailsByCityAreaAndType(String city,String area, String type);

得到错误:

Caused by: java.lang.IllegalArgumentException: Parameter with that position [1] did not exist

也尝试过 JPA:

@Query(value=" select sa from Agreement sa where LOWER(sa.city) like LOWER('%?1%') and LOWER(sa.area) like LOWER('%?2%') and sa.type=?3")
    public List<Agreement> getAgreementDetailsByCityAreaAndType(String city,String area, String type);

同样的问题:

Caused by: java.lang.IllegalArgumentException: Parameter with that position [1] did not exist

也试过用:

LOWER(city) like '%' + LOWER(?1) + '%'

来自: https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#query-by-example.execution

但它在运行时抛出查询语法错误。

有什么建议吗?

谢谢

【问题讨论】:

  • 您想使用 jpa 还是原生 sql?正如你所拥有的,nativeQuery = true
  • 现在更新了原始帖子,我什至尝试过不使用nativeQuery。同样的例外。
  • 使用 JPQL 时,您无需将“%”放在 LOWER 内。

标签: spring jpa spring-data hql spring-data-jpa


【解决方案1】:

好的,如果您使用的是 JPQL 而不是原生,那么我建议您使用 concat 函数:

@Query(value=" select sa from Agreement sa 
        where LOWER(sa.city) like LOWER(CONCAT('%', ?1, '%'))
          and LOWER(sa.area) like LOWER(CONCAT('%', ?2, '%')) and sa.type=?3")
    public List<Agreement> getAgreementDetailsByCityAreaAndType(String city,String area, String type);

我记得编号参数有一些问题,不得不使用命名参数。不过它是在旧版本上,所以请像上面那样试一试。

【讨论】:

    猜你喜欢
    • 2019-03-06
    • 2015-11-22
    • 2018-07-05
    • 1970-01-01
    • 2016-09-11
    • 1970-01-01
    • 2015-03-12
    • 2017-10-03
    • 2016-09-15
    相关资源
    最近更新 更多