如何使用 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 列插入/更新一行的主要内容,如果未能解决你的问题,请参考以下文章