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)