小编Sas*_*812的帖子

JPA(EclipseLink)自定义类型是否可行?

特别是我对使用PostgreSQLs json类型感兴趣.

问题的核心似乎是Eclipselink中没有内部映射来json 键入.因此,使用一种天真的方法:

@Column(name = "json", columnDefinition = "json")
public String getJson() {
    return json;
}
Run Code Online (Sandbox Code Playgroud)

...并尝试插入一个对象,我得到一个例外:

Internal Exception: org.postgresql.util.PSQLException: ERROR: column "json" is of type json but expression is of type character varying
Run Code Online (Sandbox Code Playgroud)

我觉得很公平.

通过EclipseLink文档,似乎适用的自定义(转换映射,本机查询,转换器)依赖于由支持的映射(数字,日期,字符串等)组成的数据,因此使得使用它变得非常尴尬供应商特定类型.

这是如此令人沮丧的主要原因是jsonposgresql 中的类型表达与text/varchar相同,我相信(目前,但不是永远)只是该类型的别名 - 因此驱动程序能够传输这个,这只是我的验证规则.

就解决方案而言,我不介意丢失可移植性(在数据库不可知和使用供应商特定类型方面),但只是想要一个允许我json在普通JPA实体上使用类型作为属性并保留所有它习惯的其他行为(模式生成,合并,持久化,事务代码

postgresql json jpa jdbc eclipselink

14
推荐指数
1
解决办法
6448
查看次数

标签 统计

eclipselink ×1

jdbc ×1

jpa ×1

json ×1

postgresql ×1