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

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

我有实体用户

@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);
}

Controller

@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);
    }
}

在类 UserController 的 signUp 方法 userRepository.save(user) 中抛出错误 Inferred type 'S' for type parameter 'S' is not within its bound;应该实现 'Repository.UserRepository

最佳答案

您的 Repository 接口(interface)声明不正确。

改变

public interface UserRepository extends JpaRepository<UserRepository, Long> 

public interface UserRepository extends JpaRepository<User, Long> 

关于java - Jpa 存储库保存类型参数 'S' 的推断类型 'S' 不在其范围内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50722517/

相关文章:

java - JNI 文档中 "Unicode string"是什么意思?

java - 使用 Spring Boot 在 Oracle、MySQL 数据库中创建用户 - Spring Data JPA

java - spring data elasticsearch聚合总和——价格、数量

java - 在spring boot中连接到多个数据库

java - main 中的 String[] args

java - Java 中的泛型类转换

java - 我的 jsp 页面上出现错误 -- 常量字符串太长

java - 在 Spring Webflux 中返回 201 具有特定主体的创建状态

spring-boot - 将 LogStash Log4j 配置升级到 Log4j2

java - 通过 JPA 更新对象并获取旧值