如何使用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注释可以添加到字段中,例如

@JsonGenerate

public String preferences;

我对JPA相当陌生,文档非常丰富。

我相信我的情况很普遍。谁能举任何例子?

回答:

老实说,我认为最好的解决方案是为属性创建一个单独的表(首选项)。

+------------+

| preference |

+------------+---------+------+-----+

| Field | Type | Null | Key |

+------------+---------+------+-----+

| user_id | bigint | NO | PRI |

| key | varchar | NO | PRI |

| value | varchar | NO | |

+------------+---------+------+-----+

您可以这样在您的实体中进行映射:

@Entity

public 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

回到顶部