你能帮我用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<String, String> map;
如果Map<MyEnum, String>
是未映射的类,请问您还可以解释如何保留MyEnum
吗?
答案 0 :(得分:13)
根据规范,您应该像这样注释地图:
@ElementCollection(targetClass = String.class)
@CollectionTable(name = "MAP")
@MapKeyColumn(name="key")
@Column(name="value")
private Map<String, String> map;
所以@MapKeyColumn
代替@MapKey
。
这是在将地图定义为:
时注释地图的方式private Map<Basic, Basic> map; // (i.e. Map<String, String>)
将地图定义为:
时,使用@MapKey
注释
private Map<Basic, Entity> map; // (i.e. Map<String, User>)
最后,如果您有地图定义的广告,则使用@MapKeyEnumerated
注释:
private Map<Enumeration, Basic> map; // (i.e. Map<MyEnum, String>)