Как вернуть из БД запись в enum
Есть какое-то Entity:
@Entity
@Table(name = "Peoples")
public class People implements Serializable {
@Id
@GeneratedValue(strategy = GeneratedType.AUTO)
private Long id;
private Profession profession;
стандартные геттеры, сеттеры
}
Поле profession представлено енумом:
public enum Profession {
MANAGER,
COUNTER,
ENGINEER,
}
В таблица БД поле Profession сохраняется как VARCHAR. Есть несколько записей:
| id | Profession |
|---|---|
| 0 | MANAGER |
| 1 | MANAGER |
| 2 | COUNTER |
В @RestController пытаюсь вернуть все записи таблицы без каких-либо условий, через:
@Autowired
private PageingAndSortingRepository<People, Long> peopleRepository;
@GetMapping
public List<People> getAllPeople() {
return peopleRepository.findAll(PageRequest.of(0, 3, Sort.by("id"))).toList();
}
Получаю ошибку:
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.dao.InvalidDataAccessApiUsageException: For input string: "MANAGER"; nested exception is java.lang.NumberFormatException: For input string: "MANAGER"
Данные должны передаться в теле ответа в JSON виде:
{
"id":[Long]
"profession":[Profession]
}
Какие только сеттеры и геттеры не ставил, енумы пытался переписать со строковыми значениями, конвертеры пытался писать, ничего не выходит. Ни как не могу понять природу этой ошибки и от куда растут ее корни. Буду весьма признателен, если кто поможет.
Ответы (1 шт):
Автор решения: Евгений Кузнецов
→ Ссылка
@Entity
@Table(name = "Peoples")
public class People implements Serializable {
@Id
@GeneratedValue(strategy = GeneratedType.AUTO)
private Long id;
@Enumerated(EnumType.STRING)
private Profession profession;
стандартные геттеры, сеттеры
}