更新类型 json 的列值失败,出现异常

Updating a column value of type json failed with an exception

我正在使用 postgresql 并且我的专栏之一是 json.

类型

我正在使用 REST API,我得到的响应是一个 json 字符串,我存储在 json 列中。

使用 Hibernate,我无法对此专栏进行更新。

注意: 我正在使用 google Gson 使其成为 json 并将其存储到 db.

示例:

Gson gson = new Gson();
myBean.setJsonData(gson.toJson(response));
myHomeDao.attachDirty(myBean); //Error Here

日志:

Caused by: org.postgresql.util.PSQLException: ERROR: column json_data" is of type json but expression is of type bytea
  Hint: You will need to rewrite or cast the expression.
  Position: 247
    at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2198)
    at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1927)
    at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:561)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:419)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:365)
    at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:208)
    ... 16 more

它看起来像 Postgre 的一个错误,我发现这个 workaround 也许你可以用它来解决你的问题。

如果没有帮助,也许您需要编写一个自定义休眠类型,在 jdbc 驱动程序上使用 setObject 方法,而不是使用文本或字节。

希望对您有所帮助!