我的@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)]
我认为我没有正确处理这个解析。有任何想法吗?
答案 0 :(得分:5)
Hibernate正在尝试将值“1%”转换为目标类型(User.id),即Long。这显然是不可能的。 LIKE仅适用于hibernate中的字符串,您可以使用str(u.id)进行换行,但请参见下文。