老实说,我认为最好的解决方案是为属性创建一个单独的表(首选项)。
+------------+| 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之类的“创意解决方案”。



