如何使用JPA和Hibernate自动序列化和反序列化JSON字符串?
我有数据类/表“ User”,其中有“ preferences”列
CREATE table "user"; ALTER TABLE "user" ADD COLUMN preferences TEXT;
首选项类型为TEXT,我在其中存储JSON。
public class User extends AbstractEntity{public String preferences;
}
所以user.preferences
价值是"{notifyByEmail:1, favouriteColor:"blue" }"
如何使用一些注释将其包装起来,以便像
user.preferences.notifyByEmail
或无需包装到数据对象中
user.preferences.get("notifByEmail");user.preferences.set("notifByEmail",true);
我想可能会有一些Jackson注释可以添加到字段中,例如
@JsonGeneratepublic String preferences;
我对JPA相当陌生,文档非常丰富。
我相信我的情况很普遍。谁能举任何例子?
回答:
老实说,我认为最好的解决方案是为属性创建一个单独的表(首选项)。
+------------+| preference |
+------------+---------+------+-----+
| Field | Type | Null | Key |
+------------+---------+------+-----+
| user_id | bigint | NO | PRI |
| key | varchar | NO | PRI |
| value | varchar | NO | |
+------------+---------+------+-----+
您可以这样在您的实体中进行映射:
@Entitypublic class User
{
@Id
private Long id;
@ElementCollection
@MapKeyColumn(name = "key")
@Column(name = "value")
@CollectionTable(name = "preference",
joinColumns = @JoinColumn(name = "user_id"))
private Map<String, String> preferences;
}
这样,您的数据库就可以更规范化,而您也不必无所事事,例如将首选项存储为JSON之类的“创意解决方案”。
以上是 如何使用JPA和Hibernate自动序列化和反序列化JSON字符串? 的全部内容, 来源链接: utcz.com/qa/409480.html