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

时间:2015-09-16 14:02:33

标签: 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
}

我的回购方法

@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)]

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

1 个答案:

答案 0 :(得分:5)

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