如何使用 Java SprinBoot CrudRepository 在 MySQL 中为 JSON 列插入/更新一行

Posted

技术标签:

【中文标题】如何使用 Java SprinBoot CrudRepository 在 MySQL 中为 JSON 列插入/更新一行【英文标题】:How to insert/update a row in MySQL for JSON column using Java SprinBoot CrudRepository 【发布时间】:2019-11-02 04:29:49 【问题描述】:

我正在尝试使用 Java SpringBoot CrudRepository 在 mysql JSON 列中插入一行。我已经浏览了多个帖子,但无法得到答案。

我将自定义查询定义为:

@Modifying
@Transactional
@Query(value = "insert into cs_test_json(config) values (':data')", nativeQuery = true)
	public void setData(@Param("data") String string);

和 MySQL 表(cs_test_json)是:

id int
config JSON

在我的控制器中我写了

JSONObject data = new JSONObject();
		data.put("name", "kc");
		data.put("age", 28);
		data.put("city", "Abad");

		repository.setData(data.toString());

当我运行这个应用程序时,我总是得到(在调用 setData 方法时) com.mysql.cj.jdbc.exceptions.MysqlDataTruncation:数据截断:无效的 JSON 文本:“无效值。”在“cs_test_json.config”列的值中的位置 0

请建议我缺少什么。 我正在使用 MySQL 8

非常感谢。

【问题讨论】:

【参考方案1】:

我发现了':data'。你可以试试:data.?这是您传递的字符串,不需要引号来进一步限定。 Spring 数据负责处理它。

我正在通过手机回复。请原谅拼写错误和格式。

【讨论】:

以上是关于如何使用 Java SprinBoot CrudRepository 在 MySQL 中为 JSON 列插入/更新一行的主要内容,如果未能解决你的问题,请参考以下文章

基于JAVA的sprinboot+vue车辆充电桩,附源码+数据库+论文+PPT

SprinBoot CLI 安装(Mac版)

Sprinboot中使用JPA及简单的原生分页组件

Dubblo +zookeep+sprinboot下载安装

Dubblo +zookeep+sprinboot下载安装

Dubblo +zookeep+sprinboot下载安装