我正在使用Spring框架和JDBC模板,并且还在使用Postgres。
我在Postgres中有一些使用UUID作为主键的表,该列的类型为Postgres的native UUIDs。如何将这些UUID存储在通过JDBC模板创建的预处理语句中?
我尝试将UUID转换为字符串,如下所示:
但是这会导致出现这个错误:
如果我只是使用原始的UUID,像这样:
然后我最终遇到了这个错误:
任何想法吗?这让我发疯了。
我在Postgres中有一些使用UUID作为主键的表,该列的类型为Postgres的native UUIDs。如何将这些UUID存储在通过JDBC模板创建的预处理语句中?
我尝试将UUID转换为字符串,如下所示:
int rowsAffected = this.jdbc.update(sql, new Object[] {
baseMaterial.getId().toString().toLowerCase(),
baseMaterial.getName(),
baseMaterial.getDescription()
});
但是这会导致出现这个错误:
ERROR: column "id" is of type uuid but expression is of type character varying
Hint: You will need to rewrite or cast the expression.
如果我只是使用原始的UUID,像这样:
int rowsAffected = this.jdbc.update(sql, new Object[] {
baseMaterial.getId(),
baseMaterial.getName(),
baseMaterial.getDescription()
});
然后我最终遇到了这个错误:
org.postgresql.util.PSQLException: Can't infer the SQL type to use for an instance of java.util.UUID. Use setObject() with an explicit Types value to specify the type to use.
任何想法吗?这让我发疯了。
<version>9.1-901-1.jdbc4</version>
- Rico Kahler