【发布时间】:2013-12-18 19:51:06
【问题描述】:
我对使用 PostgreSQLs json 类型特别感兴趣。
问题的核心似乎是Eclipselink中没有内部映射到json类型。因此,使用一种天真的方法:
@Column(name = "json", columnDefinition = "json")
public String getJson() {
return json;
}
...并试图插入一个对象,我得到一个异常:
Internal Exception: org.postgresql.util.PSQLException: ERROR: column "json" is of type json but expression is of type character varying
我想这很公平。
查看 EclipseLink 文档,似乎适用的自定义(转换映射、本机查询、转换器)依赖于由支持的映射(数字、日期、字符串等)组成的数据,因此这使得这很尴尬绕过使用供应商特定类型。
这令人沮丧的主要原因是 posgresql 中的 json 类型与 text/varchar 表示相同,我相信(目前,但不是永远)只是该类型的别名 - 因此驱动程序是不仅仅是能够传输这个,它只是以我的方式验证规则。
就解决方案而言,我不介意失去可移植性(就与数据库无关和使用供应商特定类型而言),但只想要一个允许我使用json 类型作为普通属性的解决方案JPA 实体并保留它习惯的所有其他行为(模式生成、合并、持久化、事务代码
【问题讨论】:
标签: json postgresql jpa jdbc eclipselink