Postgres hstore 转换工作错误

Postgres hstore casting works wrong

以下行与 Java 8 不正确。 (Map<Integer, BigDecimal>) resultSet.getObject("hstore_field");

hstore 键和值作为文本存储在 Postgres 数据库中。尽管从 resultSet 接收到的对象被强制转换为 Map<Integer, BigDecimal>,并且在编译期间没有接收到 warnings/errors,但 HashMap 中保存的数据类型为 <String, String>。 我已经用 instanceof BigDecimal 进行了测试,结果是错误的。 更有趣的 lambda 方法在运行时失败

hstoreMap.foreach((k,v)-> System.out.println(k + " " +v));

所以,问题很明显 - 转换不能这样工作。因此我转换为 Map,然后将 map 转换为所需的类型。 无论如何,这是一种错误吗?

我不是 100% 确定,但这是我能为您找到的:

http://www.postgresql.org/message-id/4FAB8796.40904@nitorcreations.com

看起来 hstore 支持仍然限于 HashMap<String, String> 包装器对象。无论如何我都不会称之为错误。