我在使用 Spring 存储库时遇到问题。
我正在定义一个查询方法,但它在存储库实例中不可用。
我是否必须实现此方法查询或添加任何依赖项?
UserRepository 接口:
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
User findUserByEmailAndPassword(String email, String password);
}
我要执行此查询方法的方法:
@PostMapping("/login")
public String loginUser(@ModelAttribute("user") User user, BindingResult bindingResult, Model model, HttpSession session){
if(bindingResult.hasErrors())
return "/login";
User loggedUser = userService.getUserRepository().findUserByEmailAndPassword("email", "password");
}
然后我收到消息 Cannot resolve method 'findUserByEmailAndPassword' in 'JpaRepository'
。我试图用 sql 查询参数添加 @Query
注释,但它没有改变任何事情
答案 0 :(得分:0)
从您的代码中很难判断,但根据您看到的错误消息,我假设 userService.getUserRepository()
的返回类型为 JpaRepository
,但声明了 findUserByEmailAndPassword
在UserRepository
。
如果是这种情况,您将需要转换 userService.getUserRepository()
的结果或将返回类型更改为 UserRepository
。
答案 1 :(得分:0)
§ 6.3.2. Query Creation 说,你的方法名称应该是:
findByEmailAndPassword(String email, String password);
代替:
findUserByEmailAndPassword(String email, String password);