Vladislav:
Estoy tratando de desarrollar una sencilla aplicación CRUD-, que recibe datos en el formato JSON, lo procesa y lo pone en una tabla de PostgreSQL. Uno de los campos en la tabla, el género, está representado por una enumeración.
Aquí estoy tratando de añadir una entrada que utiliza el cartero:
{
"employeeId": 1,
"firstName": "Ada",
"lastName": "Lovelace",
"departmentId": 3,
"jobTitle": "Senior",
"gender": "FEMALE",
"dateOfBirth": "1815-12-10"
}
Aquí está el código DAO-capa:
@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());
}
Como resultado, me sale: 500 Error interno del servidor y
"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."
Por favor, ayúdame, I Google este problema durante varios días y no puedo encontrar una solución
Nazeem:
¿Qué tipo SQL es el campo de género?
En lugar de pasar en la enumeración, también se puede pasar en la cadena equivalente, por ejemplo employee.getGender().name()
, oemployee.getGender().toString()