我有一些具有独特字段的实体
name
:
@Data
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "products")
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false, unique = true)
private String name;
}
我需要知道这个函数可能会抛出什么异常:
public List<Product> findAllByName(List<String> names);
我从文档中知道,如果传递 null (或某些列表元素为 null),
findAllBy*
方法将抛出 IllegalArgumentException
。
但是这个方法会返回什么如果:
names
大小。我对第二个案例非常感兴趣。如果没有抛出异常,我应该自己抛出吗?
https://www.baeldung.com/spring-boot-bean-validation
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@NotBlank(message = "Name is mandatory")
private String name;
@NotBlank(message = "Email is mandatory")
private String email;
// standard constructors / setters / getters / toString
}
使用@Valid注释。
@RestController
public class UserController {
@PostMapping("/users")
ResponseEntity<String> addUser(@Valid @RequestBody User user) {
// persisting the user
return ResponseEntity.ok("User is valid");
}
// standard constructors / other methods
}
@ExceptionHandler 注解允许我们通过一个方法处理指定类型的异常。
@ResponseStatus(HttpStatus.BAD_REQUEST)
@ExceptionHandler(MethodArgumentNotValidException.class)
public Map<String, String> handleValidationExceptions(
MethodArgumentNotValidException ex) {
Map<String, String> errors = new HashMap<>();
ex.getBindingResult().getAllErrors().forEach((error) -> {
String fieldName = ((FieldError) error).getField();
String errorMessage = error.getDefaultMessage();
errors.put(fieldName, errorMessage);
});
return errors;
}