我有实体用户
@Entity
@Data
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
private String username;
private String password;
}
UserRepository
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)throw error推断类型&#39; S&#39;对于类型参数&#39; S&#39;不在其范围内;应该实现&#39; Repository.UserRepository
答案 0 :(得分:13)
您的存储库界面声明不正确。
更改
public interface UserRepository extends JpaRepository<UserRepository, Long>
到
public interface UserRepository extends JpaRepository<User, Long>
答案 1 :(得分:1)
对我来说,出现此错误是因为新版本的spring boot中的 module.exports = {
pages: {
index: {
// entry for the page
entry: 'src/main.js',
// the source template
template: 'public/dummy.html',
// output as dist/index.html
filename: 'dummy.html'
}
},
publicPath: '/',
indexPath: 'dummy.html'
}
方法不支持将save(list)
作为参数,因此我将其替换为List of objects
,因此{{ 1}}
答案 2 :(得分:0)
以下是另一个可行的解决方案
return customRepository.findById(id).orElse(null);
答案 3 :(得分:0)
在存储库界面中创建保存方法
void save(List<? extends User> user);
答案 4 :(得分:0)
原因:廖老师的春季靴使用1.4.1.RELEASE,新版本通常为2.0或更高版本。 解决方案:替换findOne方法
return repo.findById(id).orElse(null);
答案 5 :(得分:0)
新版本通常是 2.0 或更高版本有此更改。它们限制了对象的 Save() 方法。要保存列表类型的数据,我们必须使用 saveAll()。