我收到一个json消息。我反序列化大多数字段,但是有一个字段我不需要反序列化,但是我必须保存到db中。它可以是任何json对象:
{
"important_field": 123,
"unimportant" : {...}
}
所以我将其反序列化为
int important_field;
JsonObject unimportant;
,现在我需要将其保存到postgres。 unimportant
字段映射为jsonb。当然,当我尝试使用spring保存它时:
jdbcTemplate.batchUpdate("insert into my_table (default, ?,?)", list)
我得到:
PSQLException:无法推断用于com.fasterxml.jackson.databind.node.ObjectNode实例的SQL类型。将setObject()与显式的Types值一起使用以指定要使用的类型。
我该如何保存?我必须手动序列化unimportant
字段吗?还是有一些更好的反序列化消息的方法,这种方法更易于保存?
答案 0 :(得分:0)
是的,您必须先将其序列化为字符串,然后使用显式类型转换/转换:
jdbcTemplate.batchUpdate("insert into my_table (default, ?, ?::jsonb)", list)
由于JSON仍然是文本格式,因此,如果驱动程序为您执行此操作,则不会带来性能优势。