java - Spring - 参数值与预期类型不匹配 [java.lang.Long]

标签 java spring

我的 @Controller 中有以下行根据传递的字符串或部分字符串返回结果。字符串可能是数字,在这种情况下,我将其解析为长值

public @ResponseBody Page<Object> searchUsers(
    @RequestParam(value = "search-string", required = false) String string) {

    List<User> results = myRepo.findByUId(Long.valueOf(searchString).longValue();
    //do stuff
}

我的 repo 方法
@Query("SELECT u FROM User b WHERE u.uid LIKE :id%")
List<User> findByIdStartsWith(@Param("uid") Long uid);  

但是我得到以下异常(假设我的参数是“1”):
java.lang.IllegalArgumentException: Parameter value [1%] did not match expected type [java.lang.Long (n/a)]

我认为我没有正确处理这个解析。有任何想法吗?

最佳答案

Hibernate 正在尝试将值“1%”转换为 Long 的目标类型 (User.id)。这显然是不可能的。 LIKE 仅适用于 hibernate 中的字符串,您可以使用 str(u.id) 包装,但请参见下文。

关于java - Spring - 参数值与预期类型不匹配 [java.lang.Long],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32610834/

相关文章:

spring - 使用带有来自 Spring 的可变参数的 FactoryMethod 创建 Spring Bean?

spring - PropertyPlaceholderConfigurer : Use external properties file

spring - 使用 Spring Bean 声明覆盖 Grails 中的服务

java - 如何异步调用 Jersey 邮寄方法?

java - 在 PDFBox 中制作 PDF 时图像周围的边框

java - 强制创建多个相同类型的对象

java - Godaddy API 自动化获取所有域名

java - Spring 值注入(inject) Map 列表的 Map

spring - 上下文相关的扫描组件过滤器

java - "Lambdifying"Java中的scala函数