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 值存储在 CLOBVARCHAR 列中。 JDBC 接口试图“与 SQL 标准一起”,并且由于标准中没有 JSON 的特定类型,因此 JDBC 不需要定义一个(顺便说一句:Postgres 支持 JSON 的时间比 MySQL 长得多)【参考方案2】:

根据您需要等效类型的上下文,com.mysql.cj.MysqlType.FIELD_TYPE_JSONjava.sql.Types.LONGVARCHAR 应该可以工作。

【讨论】:

以上是关于java.sql.Types.JSON 不是默认的 JDBC 类型的主要内容,如果未能解决你的问题,请参考以下文章

默认构造函数是不是初始化内置类型?

Android获取当前区域设置,而不是默认设置

如何设置某些图标而不是默认图钉?

属性默认值为 null 是不是与无默认值相同?

获取自定义帖子而不是默认的 Wordpress 帖子

不是我创建的 Android 默认 alertdialog 背景颜色