【问题标题】:Parameter value [vbs@gmail.com] did not match expected type [java.lang.Long (n/a)]; nested exception is java.lang.IllegalArgumentException:参数值 [vbs@gmail.com] 与预期类型 [java.lang.Long (n/a)] 不匹配;嵌套异常是 java.lang.IllegalArgumentException:
【发布时间】:2020-02-23 18:18:55
【问题描述】:

UserController.java 类 如果我删除“required=false”错误仍然相同。

@RequestMapping(value= "/login", method = RequestMethod.POST)
public String login(@RequestParam(value= "email", required = false) String email, @RequestParam(value= "password", required = false) String password, ModelMap modelmap) {
    User user = userrepository.getEmailById(email);
    if(user.getPassword().equals(password))
        return "findFlights";
}

UserRepository.java 类

public interface UserRepository extends JpaRepository<User, Long> {
    User getEmailById(String email);
}

login.jsp

<form action="login" method="post">
<pre>
Email: <input type="text" name="email"/>
Password: <input type="password" name="password"/>
<input type="submit" value="login">
${msg}
</pre>
</form>

【问题讨论】:

  • 请阅读How to Ask 并重新格式化您的问题,最好添加一些关于您正在尝试执行的操作的描述,尤其是异常的堆栈跟踪(通常在询问异常时应该这样做)。跨度>
  • User 的类是什么样的?可能它有一个id 字段,即Long。仓库界面的finder方法不正确。你说“getEmailById”,Spring Data JPA 希望你传递一个匹配 id 的值 - Long,而不是 String。

标签: java spring spring-boot spring-mvc spring-data-jpa


【解决方案1】:

问题似乎与您的控制器实现无关。 UserRepository 实现似乎引发了一个异常,其中您的数据库调用需要很长时间,但您正在发送字符串。

【讨论】:

    【解决方案2】:

    查看您共享的数据有两种可能的情况

    • 如果您的用户实体将 ID 列作为字符串并且在这种情况下可以是电子邮件,那么您的存储库应该是

    JpaRepository&lt;User,String&gt;

    • 如果您的用户实体的 ID 列一样长,那么您如何尝试将字符串电子邮件 ID 与长 ID 列匹配。

    【讨论】:

      猜你喜欢
      • 2020-08-11
      • 2018-08-17
      • 2019-07-23
      • 1970-01-01
      • 2019-08-26
      • 2015-12-13
      • 2014-04-06
      • 2022-11-10
      • 2013-02-20
      相关资源
      最近更新 更多