更新类型 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 方法,而不是使用文本或字节。
希望对您有所帮助!
我正在使用 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 方法,而不是使用文本或字节。
希望对您有所帮助!