Если вы действительно хотите сделать это из Postgres, то вы можете попробовать использовать REGEXP_REPLACE
:
WITH cte AS (
SELECT '{"value1":"answer1", "value2":"answer2"}'::json AS col
)
UPDATE cte
SET col = REGEXP_REPLACE(col::text,
'\}$',
', "nickname":"name1", "color":"red"}')::json;
{"value1":"answer1", "value2":"answer2", "nickname":"name1", "color":"red"}
Этот подход использует прямое манипулирование строкой, чтобы найти конец строки JSON, а затем вставитьновые пары ключ-значение.
Если вы использовали Postgres 9.5 или более позднюю версию, вам может потребоваться использовать оператор слияния ||
для добавления нового содержимого JSON.Поддержка Postgres для манипулирования JSON стала лучше в последних версиях, но версия 9.4 не предлагает много.
Кроме того, если вы могли бы справиться с этим из слоя Hibernate / JPA, это могло бы иметь больше смысла.