小编典典
好吧,错误消息很清楚:Double不是实体。如果要映射基本元素的集合,请使用CollectionOfElement批注(来自Hibernate)或ElementCollection批注(来自JPA
2.0)。
因此,假设您使用的是Hibernate Annotations 3.4,请尝试以下操作:
@CollectionOfElements(targetElement = Double.class)
@org.hibernate.annotations.MapKey(targetElement = String.class)
Map data;
或者,使用泛型时:
@CollectionOfElements
Map data;
如果您使用的是Hibernate Annotations 3.5+,则更喜欢JPA 2.0注释:
@ElementCollection(targetClass = Double.class)
@MapKeyClass(String.class)
Map data;
或者,使用泛型时:
@ElementCollection
Map data;
参考文献
JPA 2.0规范 第11.1.12节“ ElementCollection批注”
第11.1.28节“ MapKeyClass注释”
您知道如何自定义“ ELEMENT”和“ MAPKEY”列名称吗?
您可以完全自定义结果。我认为以下示例展示了所有内容:
@CollectionOfElements(targetElement = Double.class)
@JoinTable(name = "COLLECTION_TABLE",
joinColumns = @JoinColumn(name = "PARENT_ID"))
@org.hibernate.annotations.MapKey(targetElement = String.class,
columns = @Column(name = "SOME_KEY"))
@Column(name = "SOME_VALUE")
private Map data;
的收集表名称Map是使用定义的JoinTable父级键的列名称是使用JoinColumn中的设置的JoinTable
映射键的列名称在 MapKey
映射值的列名称是使用定义的 Column
2020-06-20