我使用 spring
和 hibernate
将 @Entity
类保存到 mysql
数据库中。
对于一个属性,我希望将对象保留为 String
或 Json
字段,而不是创建额外的表并使用 @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/