【发布时间】:2023-03-30 00:23:01
【问题描述】:
当使用 PostgreSQL 将数据存储在类似字符串的验证类型的字段中时,例如 xml、json、jsonb、xml、ltree 等,INSERT 或 @987654327 @ 失败并出现如下错误:
column "the_col" is of type json but expression is of type character varying
... 或
column "the_col" is of type json but expression is of type text
为什么?我该怎么办?
我正在使用 JDBC (PgJDBC)。
这通过 Hibernate、JPA 和各种其他抽象层发生。
PostgreSQL 团队的“标准”建议是在 SQL 中使用 CAST。这对于使用查询生成器或 ORM 的人没有用,尤其是如果这些系统没有明确支持 json 等数据库类型,因此它们在应用程序中通过 String 映射。
一些 ORM 允许实现自定义类型处理程序,但我真的不想为每个 ORM 的每个数据类型编写自定义处理程序,例如Hibernate 上的 json,EclipseLink 上的 json,OpenJPA 上的 json,Hibernate 上的 xml,等等。没有用于编写通用自定义类型处理程序的 JPA2 SPI。我正在寻找一个通用的解决方案。
【问题讨论】:
标签: json postgresql jpa jdbc casting