作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用带有 JDBC 模板的 spring 框架,我也在使用 postgres。
我在 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.
有什么想法吗?这让我发疯。
最佳答案
您使用的 PostgreSQL 驱动程序版本已有 6 年历史,此后进行了很多更改/改进。我建议升级到版本 42.1.4。
我已经扫描了 release notes , 但我没有找到他们添加(或改进)对 UUID 支持的具体版本。
关于java - 如何在 JDBC 模板中使用 UUID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47036160/
我是一名优秀的程序员,十分优秀!