插入枚举值时如何解决“无法推断SQL类型用于枚举实例”的错误?

时间:2019-01-26 12:36:34

标签: java postgresql jdbc enums postman

我正在尝试开发一个简单的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."

请帮助我,我在Google上搜索了几天该问题,但找不到解决方法

1 个答案:

答案 0 :(得分:0)

性别字段是什么SQL类型?

除了传递枚举,还可以传递等效的字符串,例如employee.getGender().name()employee.getGender().toString()