当前位置:  开发笔记 > 编程语言 > 正文

Hibernate持久化Map <String,String>而不引用另一个表

如何解决《Hibernate持久化Map<String,String>而不引用另一个表》经验,为你挑选了1个好方法。

你能帮我用Hibernate来持久保存字符串的地图吗?

地图值来自客户端并且是随机的,因此我不想为地图的值存储单独的表

例外

引起:org.hibernate.AnnotationException:找不到关联的类:java.lang.String

@Entity
public class UserConfig {

    @Id
    @SequenceGenerator(sequenceName = "CONFIG_SEQ", name = "ConfigSeq", allocationSize = 1)
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "ConfigSeq")
    private Long id;

    @ElementCollection(targetClass = String.class)
    @CollectionTable(name = "MAP")
    @MapKey(name="key")
    @Column(name="value")
    private Map map;

更新

你能否解释如何坚持Map,如果MyEnum是一个未映射的类?



1> Maciej Kowal..:

根据规范,您应该像这样注释地图:

    @ElementCollection(targetClass = String.class)
    @CollectionTable(name = "MAP")
    @MapKeyColumn(name="key")
    @Column(name="value")
    private Map map;

所以@MapKeyColumn,而不是@MapKey.

这是您定义为地图时应该注释的方式:

private Map map; // (i.e. Map)

@MapKey将地图定义为:时,可以使用注释:

private Map map; // (i.e. Map)

最后,@MapKeyEnumerated当您有地图定义广告时使用注释:

private Map map; // (i.e. Map)


另外,如果我们使用泛型,也可以省略`targetClass`
推荐阅读
地之南_816
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有