我的PostgreSQL DB(9.2)中有一个带有JSON类型列的表.我很难将此列映射到JPA2实体字段类型.
我试图使用String,但是当我保存实体时,我得到一个异常,它无法将字符转换为JSON.
处理JSON列时使用的正确值类型是什么?
@Entity
public class MyEntity {
private String jsonPayload; // this maps to a json column
public MyEntity() {
}
}
Run Code Online (Sandbox Code Playgroud)
一个简单的解决方法是定义文本列.
当使用PostgreSQL将数据存储在一个绳状验证类型的字段,如xml,json,jsonb,xml,ltree,等等,所述INSERT或UPDATE失败等错误:
column "the_col" is of type json but expression is of type character varying
Run Code Online (Sandbox Code Playgroud)
... 要么
column "the_col" is of type json but expression is of type text
Run Code Online (Sandbox Code Playgroud)
为什么?我能做些什么呢?
我正在使用JDBC(PgJDBC).
这通过Hibernate,JPA和各种其他抽象层发生.
PostgreSQL团队的"标准"建议是CAST在SQL中使用a .这对于使用查询生成器或ORM的人来说没有用,特别是如果这些系统没有对数据库类型的明确支持json,因此它们通过String应用程序进行映射.
一些ORM允许实现自定义类型处理程序,但我真的不想为每个ORM编写每个数据类型的自定义处理程序,例如Hibernate上的json,EclipseLink上的json,OpenJPA上的json,Hibernate上的xml,...用于编写通用自定义类型处理程序的JPA2 SPI没有.我正在寻找一个通用的解决方案.