【发布时间】:2018-06-06 14:08:36
【问题描述】:
我有实体用户
@Entity
@Data
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
private String username;
private String password;
}
用户存储库
public interface UserRepository extends JpaRepository<UserRepository, Long> {
User findByUsername(String username);
}
控制器
@RestController
@RequestMapping("/user")
public class UserController {
private UserRepository userRepository;
private BCryptPasswordEncoder bCryptPasswordEncoder;
public UserController(UserRepository userRepository, BCryptPasswordEncoder bCryptPasswordEncoder) {
this.userRepository = userRepository;
this.bCryptPasswordEncoder = bCryptPasswordEncoder;
}
@PostMapping("/sign-up")
public void signUp(@RequestBody User user) {
user.setPassword(bCryptPasswordEncoder.encode(user.getPassword()));
userRepository.save(user);
}
}
在 signUp 方法中的 UserController 类中,userRepository.save(user) 抛出错误推断类型参数“S”的类型“S”不在其范围内;应该实现'Repository.UserRepository
【问题讨论】:
-
在 Controller 中使用
@Autowired注释您的 userRepository。 -
这不是错
JpaRepository<UserRepository, Long>。你应该使用用户 -
您的下一个错误将是
NullPointerException -
我也遇到过类似的问题,它在存储库中,特别是您需要在 CrudRepository 中传递的类型,您需要传递域类,即
User
标签: java spring-boot spring-data spring-data-jpa