Hibernate持久化Map 而不引用另一个表

你能帮我用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; 

更新

如果MyEnum是一个未映射的类,你还可以解释如何持久化Map吗?

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

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

所以@MapKeyColumn ,而不是@MapKey

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

 private Map map; // (ie Map) 

将map定义@MapKey使用@MapKey批注:

 private Map map; // (ie Map) 

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

 private Map map; // (ie Map)