您能帮我与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是未映射的类,也请您说明一下如何继续吗?
Map<MyEnum, String>
MyEnum
根据规范,您应该这样注释地图:
@ElementCollection(targetClass = String.class) @CollectionTable(name = "MAP") @MapKeyColumn(name="key") @Column(name="value") private Map<String, String> map;
所以@MapKeyColumn,而不是@MapKey。
@MapKeyColumn
@MapKey
当地图定义为以下方式时,应使用此方法进行注释:
private Map<Basic, Basic> map; // (i.e. Map<String, String>)
@MapKey将地图定义为时,可以使用注释:
private Map<Basic, Entity> map; // (i.e. Map<String, User>)
最后,@MapKeyEnumerated在您定义了地图广告后,您可以使用注释:
@MapKeyEnumerated
private Map<Enumeration, Basic> map; // (i.e. Map<MyEnum, String>)