繁体   English   中英

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

[英]How to fix "Can't infer the SQL type to use for an instance of enum" error when inserting enum value?

我正在尝试开发一个简单的 CRUD 应用程序,它接收 JSON 格式的数据,对其进行处理,并将其放入 PostgreSQL 表中。 表中的字段之一性别由枚举表示。

在这里,我尝试使用 Postman 添加一个条目:

{
    "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."

性别字段是什么 SQL 类型?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM