Как исправить ошибку «Не могу вывести тип SQL для использования в качестве экземпляра перечисления» при вставке значения перечисления? - PullRequest
0 голосов
/ 26 января 2019

Я пытаюсь разработать простое CRUD-приложение, которое получает данные в JSON-формате, обрабатывает их и помещает в таблицу PostgreSQL. Одно из полей в таблице, пол, представлено перечислением.

Здесь я пытаюсь добавить запись с помощью Почтальона:

{
    "employeeId": 1,
    "firstName": "Ada",
    "lastName": "Lovelace",
    "departmentId": 3,
    "jobTitle": "Senior",
    "gender": "FEMALE",
    "dateOfBirth": "1815-12-10"
}

Вот код уровня DAO:

@Override
public void addEmployee(Employee employee) {
    String sql = "INSERT INTO employees(employee_id, first_name, last_name, department_id, job_title, gender, date_of_birth) VALUES (?, ?, ?, ?, ?, CAST(? AS gender), ?)";
    getJdbcTemplate().update(sql, employee.getEmployeeId(), employee.getFirstName(), employee.getLastName(),
            employee.getDepartmentId(), employee.getJobTitle(), employee.getGender(), employee.getDateOfBirth());
}

В результате я получаю: 500 Internal Server Error и

"PreparedStatementCallback; bad SQL grammar [INSERT INTO employees(employee_id, first_name, last_name, department_id, job_title, gender, date_of_birth) VALUES (?, ?, ?, ?, ?, CAST(? AS gender), ?)]; nested exception is org.postgresql.util.PSQLException: Can't infer the SQL type to use for an instance of com.way.dto.Gender. Use setObject() with an explicit Types value to specify the type to use."

Пожалуйста, помогите мне, я гуглю эту проблему уже несколько дней и не могу найти решение

1 Ответ

0 голосов
/ 26 января 2019

Какой тип SQL является полем пола?

Вместо передачи в перечисление вы также можете передать строковый эквивалент, например employee.getGender().name() или employee.getGender().toString()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...