gpt4 book ai didi

java - 给定的 id 不能为空!;嵌套异常是 java.lang.IllegalArgumentException

转载 作者:行者123 更新时间:2023-12-01 17:37:21 25 4
gpt4 key购买 nike

我正在用 Spring Boot 创建一个简单的 CRUD。一切功能正常,但我对 findOne(Long id) 方法有一点问题
在 postman 中,当我输入此网址时: http://localhost:8080/api/user/id/?id=13 ,我得到这个异常:

错误”:“内部服务器错误”,
"异常": "org.springframework.dao.InvalidDataAccessApiUsageException",
"message": "给定的 id 不能为空!;嵌套异常为
java.lang.IllegalArgumentException:给定的 id 不能为空!",

这是我的代码:
存储库

@SuppressWarnings("unused")
@Repository
public interface UserRepository extends JpaRepository<Utilisateur, Long> {
}


服务

public interface UserService {

Utilisateur save(Utilisateur utilisateur);
List<Utilisateur> findAll();
Utilisateur findOne(Long id);
}

ServiceImpl

@Service
public class UserServiceImpl implements UserService{
@Autowired
UserRepository userRepository;


public UserServiceImpl() {
}

public UserServiceImpl(UserRepository userRepository) {
this.userRepository = userRepository;
}

@Override
public Utilisateur save(Utilisateur utilisateur) {
return userRepository.save(utilisateur);
}




@Override
public List<Utilisateur> findAll() {
return userRepository.findAll();
}

public Utilisateur findOne(Long id) {
return userRepository.findOne(id);
}
}

Controller

@RestController
@RequestMapping("/api")
@CrossOrigin(origins="http://localhost:4200",allowedHeaders="*")
public class UserController {
@Autowired
private UserService userService;

public UserController(UserService userService) {
this.userService = userService;
}

public UserController() {
super();
// TODO Auto-generated constructor stub
}

@GetMapping("/users")
public List<Utilisateur> getUsers() {
return userService.findAll();
}

@GetMapping("/user/id/{id}")
public ResponseEntity<Utilisateur> getUser(@PathVariable Long id) {
Utilisateur utilisateur = userService.findOne(id);
return ResponseEntity.ok().body(utilisateur);
}



/*
@DeleteMapping("/user/{id}")
public Boolean deleteUser(@PathVariable Long id) {
userRepository.delete(id);
return true;
} */
@PostMapping("/user")
public ResponseEntity<Utilisateur> saveUser(@RequestBody Utilisateur utilisateur) throws URISyntaxException {
Utilisateur result = userService.save(utilisateur);
return ResponseEntity.created(new URI("/api/user/" + result.getId()))
.body(result);
}



@PutMapping("/user")
public ResponseEntity<Utilisateur> updateUser(@RequestBody Utilisateur utilisateur) throws URISyntaxException {
Utilisateur result = userService.save(utilisateur);
return ResponseEntity.ok().body(result);
}
}

最佳答案

您已将映射设置为 URL 路径变量

@GetMapping("/user/id/{id}")

但是您尝试的 URL 有一个查询参数:?id=13

尝试使用:http://localhost:8080/api/user/id/13

这是 stackoverflow 上两者的很好比较

关于java - 给定的 id 不能为空!;嵌套异常是 java.lang.IllegalArgumentException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61015361/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com