gpt4 book ai didi

java - 如何在 JDBC 模板中使用 UUID?

转载 作者:行者123 更新时间:2023-11-29 12:32:29 25 4
gpt4 key购买 nike

我正在使用带有 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com