java.sql.Types.JSON 不是默认的 JDBC 类型
Posted
技术标签:
【中文标题】java.sql.Types.JSON 不是默认的 JDBC 类型【英文标题】:java.sql.Types.JSON is not a default JDBC type 【发布时间】:2020-06-10 04:54:39 【问题描述】:JSON 是所有主要 SQL 数据库的通用数据库类型。 我不明白为什么没有 java.sql.Types.JSON 作为默认 JDBC 类型。
【问题讨论】:
【参考方案1】:java.sql.Types 类定义了用于标识通用 SQL 类型的常量。 JSON 不是通用的 SQL 类型。 JSON 是一种标准的数据交换格式。
【讨论】:
自 2015 年 8 月发布 5.7.8 版以来 mysql 已支持 JSON 列类型,包括对 INSERT 的验证、JSON 规范化以及列路径和内联等功能,这并没有太大帮助路径运算符“-> 和-->”直接从 SQL 查询等中询问 JSON。(dev.mysql.com/doc/refman/8.0/en/json.html) 所以说 java.sql.Types 只定义了“generic SQL 类型”几乎没有意义。事实上,“通用 SQL 类型”这个短语似乎几乎只被 JDBC 文档使用...... @RichPollock:SQL:2016 确实为 SQL 标准引入了 JSON 支持。然而,该标准并没有引入新的 数据类型 来存储它。它假定 JSON 值存储在CLOB
或 VARCHAR
列中。 JDBC 接口试图“与 SQL 标准一起”,并且由于标准中没有 JSON 的特定类型,因此 JDBC 不需要定义一个(顺便说一句:Postgres 支持 JSON 的时间比 MySQL 长得多)【参考方案2】:
根据您需要等效类型的上下文,com.mysql.cj.MysqlType.FIELD_TYPE_JSON
或 java.sql.Types.LONGVARCHAR
应该可以工作。
【讨论】:
以上是关于java.sql.Types.JSON 不是默认的 JDBC 类型的主要内容,如果未能解决你的问题,请参考以下文章