Jpa存储库保存类型参数"S"的推断类型"S"不在其范围内

Wal*_*ite 3 java spring-data spring-data-jpa spring-boot

我有实体用户

@Entity
@Data
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    private String username;

    private String password;

}
Run Code Online (Sandbox Code Playgroud)

UserRepository

public interface UserRepository extends JpaRepository<UserRepository, Long> {
    User findByUsername(String username);
}
Run Code Online (Sandbox Code Playgroud)

调节器

@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);
    }
}
Run Code Online (Sandbox Code Playgroud)

在signUp方法中的UserController类userRepository.save(user)throw error类型参数'S'的推断类型'S'不在其范围内; 应该实现'Repository.UserRepository

pvp*_*ran 14

您的存储库接口声明不正确.

更改

public interface UserRepository extends JpaRepository<UserRepository, Long> 
Run Code Online (Sandbox Code Playgroud)

public interface UserRepository extends JpaRepository<User, Long> 
Run Code Online (Sandbox Code Playgroud)


Jeh*_*ser 5

对我来说,我得到这个错误是因为save(list)新版本spring boot中的方法不支持aList of objects作为参数,所以我用saveAll(list)so替换了它xRepository.saveAll(list)