【问题标题】:Native Query Like Format Issue in SpringBootSpring Boot中的原生查询格式问题
【发布时间】:2018-09-29 12:03:35
【问题描述】:

我正在尝试在本机查询中使用 like 运算符,如下所示:

@Query(value = "SELECT max(id) FROM EMP where id like ___:country%", nativeQuery=true)

国家作为方法的输入参数。

得到以下错误:

java.lang.IllegalArgumentException:未知参数名称:国家

谁能帮我解决这个问题。

【问题讨论】:

  • 您好@Mehraj Malik,这与我所看到的并不重复,并且实现了相同的查询,但格式不同。如果我像这样使用 %:country% 那么它可以工作但不适用于 ___:country% 格式。

标签: spring-boot spring-data-jpa nativequery


【解决方案1】:

在您的存储库界面中使用 JPA 查询,如下所示:

@Query(nativeQuery = true, value = "SELECT max(r_id) FROM registrations WHERE r_name LIKE ?1")
int getCount (String name);

当你调用这个函数时,用你的字符串添加模数(%),如下所示:

@Autowired
private RegistrationRepository registrationRepository;        

    @GetMapping(value = "/reg-like")
    @ResponseBody
    public void regLike() {
        int max = registrationRepository.getCount("s%");
        System.out.println("" + max);
    }

或者你可以试试这样的:

@Query(nativeQuery = true, value = "SELECT max(r_id) FROM registrations WHERE r_name LIKE %?1")
int getCount (String name);

那么你可以在调用函数时省略模数(%)。

见官方文档here

【讨论】:

  • 您可以将我的答案标记为解决方案,因为它解决了您的问题。
猜你喜欢
  • 1970-01-01
  • 2018-11-30
  • 1970-01-01
  • 2016-09-30
  • 2018-03-17
  • 2021-07-21
  • 2020-07-05
  • 2020-11-12
  • 1970-01-01
相关资源
最近更新 更多