为什么休眠查询方法(在存储库接口中定义)不可用?

时间:2021-02-20 09:32:47

标签: java spring hibernate

我在使用 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 注释,但它没有改变任何事情

2 个答案:

答案 0 :(得分:0)

从您的代码中很难判断,但根据您看到的错误消息,我假设 userService.getUserRepository() 的返回类型为 JpaRepository,但声明了 findUserByEmailAndPasswordUserRepository

如果是这种情况,您将需要转换 userService.getUserRepository() 的结果或将返回类型更改为 UserRepository

答案 1 :(得分:0)

§ 6.3.2. Query Creation 说,你的方法名称应该是:

findByEmailAndPassword(String email, String password);

代替:

findUserByEmailAndPassword(String email, String password);