Ошибка: Parameter value [%NEW%] did not match expected type
Возвращает ошибку: Parameter value [%NEW%] did not match expected type
запрос: http://localhost:8080/api/users?status=NEW
В приложении скрин локальной базы. Читал много решений как это можно исправить, но не удалось решить проблему с типами.
Хочу использовать enum для того чтобы сохранять значение конкретных статусов в БД, затем когда реализовал роут с фильтрацией по статусу получил ошибку типов.
Пробывал разные рекомендуемые версии Hibernate - тщетно. У кого есть опыт в работе с enum подскажите что упустил?
UserController
@RestController
@RequestMapping("/api/users")
@CrossOrigin(origins = "http://localhost:63342")
public class UserController {
@Autowired
private UserService userService;
public UserController(UserService userService) {
this.userService = userService;
}
@PostMapping
public ResponseEntity createUser (@RequestBody Users user) {
userService.addUser(user);
return ResponseEntity.ok("Пользователь успешно создан");
}
@GetMapping
public ResponseEntity getAll() {
return ResponseEntity.ok(userService.getAll());
}
// фильтр по статусу
@GetMapping(params = "status")
public ResponseEntity<List<Users>> getUsersStatus(@RequestParam("status") String status) {
return ResponseEntity.ok(userService.getUsersByStatus(status));
}
//фильтр по компании
@GetMapping(params = "companyName")
public ResponseEntity<List<Users>> getUsersCompanyName(@RequestParam("companyName") String company) {
return ResponseEntity.ok(userService.getUsersByCompanyName(company));
}
}
Entity
@Data
@Entity
@Table(name="users")
public class Users {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="id")
private Long id;
@Column(name = "first_name")
private String firstName;
@Column(name = "last_name")
private String lastName;
@Column(name="surname")
private String surname;
@Column(name="company_name")
private String companyName;
@Column(name = "email")
private String email;
@Column(name="post")
@Enumerated(EnumType.STRING)
private UserPost post;
public UserPost getPost() {
return post;
}
public void setPost(UserPost post) {
this.post = post;
}
@Column(name="department")
private String department;
@Column(name="status")
@Enumerated(EnumType.STRING)
private UserStatus status;
public UserStatus getStatus() {
return status;
}
public void setStatus(UserStatus status) {
this.status = status;
}
}
repositoty
public interface UserRepo extends CrudRepository <Users, Long> {
// фильтрация по статусу
Users findByStatus(String status);
List<Users> findUsersByStatusContaining(String usersUserStatus);
// фильтрация по компании
Users findByCompanyName(String company);
List<Users> findUsersByCompanyNameContaining(String userCompanyName);
}
Service
@Service
public class UserService {
@Autowired
private UserRepo userRepo;
public UserService(UserRepo userRepo) {
this.userRepo = userRepo;
}
// логика создания пользователя
public Users addUser(Users user) {
userRepo.save(user);
return user;
}
// логика получения списка пользователей
public Iterable <Users> getAll() {
return userRepo.findAll();
}
// поисковый запрос, фильтр по полю status
public List<Users> getUsersByStatus(String status) {
return userRepo.findUsersByStatusContaining(status);
}
// фильтр по компании
public List<Users> getUsersByCompanyName(String company) {
return userRepo.findUsersByCompanyNameContaining(company);
}
}
enum
public enum UserStatus {
ACTIVE,
NEW,
REQUEST,
BLOCKED
}
полный текст ошибки Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.dao.InvalidDataAccessApiUsageException: Parameter value [%NEW%] did not match expected type [com.example.books_shope.enums.UserStatus (n/a)]; nested exception is java.lang.IllegalArgumentException: Parameter value [%NEW%] did not match expected type [com.example.books_shope.enums.UserStatus (n/a)]] with root cause