java - 如何在MySql中将实体持久化为Json?

标签 java mysql json spring hibernate

我使用 springhibernate@Entity 类保存到 mysql 数据库中。

对于一个属性,我希望将对象保留为 StringJson 字段,而不是创建额外的表并使用 @OneToOne > 引用映射或类似的。

以下面为例:

@Entity
public class Customer {

    //@JsonObject
    private List<Address> address;
}

public class Address {
    private String street, number, city, zip, country;
}

问题:我如何告诉 hibernate 自动将该地址保存为 string/json?当然,在读取 string/json 时应该将其重新映射到 Address 对象中。

最佳答案

您可以将 json 存储到 mySQL 表中:

CREATE TABLE `book` (
  `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
  `title` varchar(200) NOT NULL,
  `tags` json DEFAULT NULL,
  PRIMARY KEY (`id`)
)

插入查询:

INSERT INTO `book` (`title`, `tags`)
VALUES (
  'ECMAScript 2015: A SitePoint Anthology',
  '["JavaScript", "ES2015", "JSON"]'
);

在 hibernate 中,您应该创建必须实现 org.hibernate.usertype 的类(如“com.test.MyJsonType”)。 UserType 接口(interface),其中 nullSafeGet 方法应将 JSON 反序列化为 java 对象(使用 Jackson),nullSafeSet 将 POJO 序列化为 JSON 以及其他一些辅助方法。

关于java - 如何在MySql中将实体持久化为Json?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55140281/

相关文章:

java - 如何更改 BIRT 中的默认区域设置

PHP MySQL 显示分组和标记重复项

PHP 在 while 循环中从输入表单中获取值

c# - Mongodb Bson类型转Json

json - 从本地环境运行的 Android 应用程序。在市场中托管并从中下载后,它没有在我使用 GSON 的模块中运行

java - java 整数相加而不是打印

java - 从struts2-dojo移植到jquery : periodically update a frame inside a jsp

python - 如何(安全)将 Python 对象发送到我的 Flask API?

java - 从 m3u 播放列表流式传输直播电视 channel

php - 可捕获的 fatal error : Object of class PDOStatement could not be converted to string