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>
包装器对象。无论如何我都不会称之为错误。
以下行与 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>
包装器对象。无论如何我都不会称之为错误。