我的 @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/