【问题标题】:Unknown data type: "JSON" [duplicate]未知数据类型:“JSON” [重复]
【发布时间】:2018-07-16 06:14:00
【问题描述】:

我们正在尝试在hibernate中定义一个json列,如下所示:

实体类:

@TypeDef( name="CustomType", CustomJSONType.class)
...
@Type( name = "CustomType")
@Column
private JSONObject myColumn;
...

CustomJSONType 类实现了UserType

当应用程序运行时,日志显示以下错误跟踪:

2018-02-06 08:46:44.067 ERROR [company-operations-module,,,] 11804 --- [           main] org.hibernate.tool.hbm2ddl.SchemaExport  : HHH000389: Unsuccessful: create table operation (id int4 not null, creation timestamp not null, type varchar(50) not null, request_data json not null, response_data json, status varchar(50) not null, user_id varchar(30), primary key (id)) 
2018-02-06 08:46:44.067 ERROR [operations-module,,,] 11804 --- [           main] org.hibernate.tool.hbm2ddl.SchemaExport  : Unknown data type: "JSON" Unknown data type: "JSON"; SQL statement: create table operation (id int4 not null, creation timestamp not null, type varchar(50) not null, request_data json...) [50004-190] 
2018-02-06 08:46:44.067  INFO [operations-module,,,] 11804 --- [           main] org.hibernate.tool.hbm2ddl.SchemaExport  : HHH000230: Schema export complete

有什么想法吗? 提前致谢。

【问题讨论】:

  • 您使用的是哪个数据库?您的数据库是否支持 JSON 数据类型?如果不是,那么在这种情况下,您可能必须实施转换器。
  • 数据库是Posgress,但是我们执行测试的时候出现错误。在本例中,我们使用的是内存中的休眠数据库。
  • 我找到了这个,这个使用 H2 数据库。 stackoverflow.com/questions/39620317/…

标签: java json hibernate h2


【解决方案1】:

还可以使用“创建域”选项将 H2 配置为将 JSON 作为文本。 例如,在连接 URL 中:

jdbc:h2:~/test;AUTO_SERVER=TRUE;INIT=create domain if not exists json as text

【讨论】:

    【解决方案2】:

    H2 数据库不支持 JSON 数据类型。所以,你的测试失败了。

    我建议您解决的一个问题是将 JSON 列存储为 TEXT 并根据需要处理数据。

    【讨论】:

    • 我可以建议您的另一个解决方法是使用 Postgres Docker 映像 docs.docker.com/samples/library/postgres 来运行您的测试。这会增加一些开销,但值得一试。
    • 太棒了!如果它解决了您的问题,请接受答案。
    猜你喜欢
    • 2018-09-24
    • 2021-04-27
    • 1970-01-01
    • 2016-05-28
    • 1970-01-01
    • 2021-04-12
    • 2016-09-16
    • 1970-01-01
    • 2017-06-01
    相关资源
    最近更新 更多