我们试图在hibernate中定义一个json列,如下所示:
实体类:
@TypeDef( name="CustomType", CustomJSONType.class)
...
@Type( name = "CustomType")
@Column
private JSONObject myColumn;
...
CustomJSONType
类实现UserType
。
当应用程序运行时,日志会显示以下错误跟踪:
2018-02-06 08:46:44.067错误[company-operations-module ,,,] 11804 --- [main] org.hibernate.tool.hbm2ddl.SchemaExport: HHH000389:不成功:创建表操作(id int4 not null, 创建时间戳不为null,键入varchar(50)not null,request_data json not null,response_data json,status varchar(50)not null, user_id varchar(30),主键(id))2018-02-06 08:46:44.067错误 [operations-module ,,,] 11804 --- [主要] org.hibernate.tool.hbm2ddl.SchemaExport:未知数据类型:" JSON" 未知数据类型:" JSON&#34 ;; SQL语句:创建表操作(id int4 not null,创建时间戳不为null,类型varchar(50)not null, request_data json ...)[50004-190] 2018-02-06 08:46:44.067 INFO [operations-module ,,,] 11804 --- [主要] org.hibernate.tool.hbm2ddl.SchemaExport:HHH000230:架构导出 完整
有什么想法吗? 提前谢谢。
答案 0 :(得分:3)
H2数据库不支持JSON数据类型。所以,你的测试失败了。
我建议你做的一件事是将JSON列存储为TEXT并根据需要处理数据。
答案 1 :(得分:1)
还可以使用“创建域”选项将H2配置为以JSON作为文本。 例如,在连接URL中:
jdbc:h2:~/test;AUTO_SERVER=TRUE;INIT=create domain if not exists json as text