好吧,错误消息很清楚:
Double不是实体。如果要映射基本元素的集合,请使用
CollectionOfElement批注(来自Hibernate)或
ElementCollection批注(来自JPA
2.0)。
因此,假设您使用的是Hibernate Annotations 3.4,请尝试以下 *** 作:
@CollectionOfElements(targetElement = Double.class)@org.hibernate.annotations.MapKey(targetElement = String.class)Map data;
或者,使用泛型时:
@CollectionOfElementsMap<String, Double> data;
如果您使用的是Hibernate Annotations 3.5+,则更喜欢JPA 2.0注释:
@ElementCollection(targetClass = Double.class)@MapKeyClass(String.class)Map data;
或者,使用泛型时:
参考文献@ElementCollectionMap<String, Double> data;
- Hibernate注释3.4参考指南
- 2.4.6.2.2。地图
- 2.4.6.2.5。元素或复合元素的集合
- 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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)