首页 > 解决方案 > 将 jsonb 数据从 Java 保存到 Postgres

问题描述

我在数据库中有我的 json 列作为 jsonb 对象,我的 ORM 映射具有以下内容

@Column(name = "response_json")
@ColumnTransformer(write = "?::jsonb")
private String responseJson;

当我尝试使用 saveOrUpdate() 写入数据库时

myDao.updateJsonByTxId(i, myJson.toString());

我正在将作为 JSONObject 的 myJson 转换为字符串,我收到以下错误

Caused by: org.postgresql.util.PSQLException: ERROR: column "response_json" is of type jsonb but 
expression is of type character varying
Hint: You will need to rewrite or cast the expression.
Position: 48

Json 字符串绝对是有效的 json,不知道是什么问题

标签: javaspringpostgresqlhibernateorm

解决方案


您不应将@ColumnTransformer用于此目的。这是容易出错的解决方案。

  1. 您可以编写自己的休眠类型。例如见这篇文章

  2. 您可以使用例如休眠类型库。见这篇文章


推荐阅读