Java 保存一张地图<;整数,浮点>;与JPA合作

Java 保存一张地图<;整数,浮点>;与JPA合作,java,hibernate,jpa,Java,Hibernate,Jpa,在类中持久化以下映射的最佳方法是什么: @Entity class MyClass { @ManyToMany(cascade = CascadeType.ALL) Map<Integer,Float> myMap = new HashMap<Integer, Float>(); } @实体 类MyClass{ @多个(级联=级联类型.ALL) Map myMap=newhashmap(); } 我尝试过这个,但代

在类中持久化以下映射的最佳方法是什么:

  @Entity
  class MyClass {


      @ManyToMany(cascade = CascadeType.ALL)    
      Map<Integer,Float> myMap = new HashMap<Integer, Float>(); 
  } 
@实体
类MyClass{
@多个(级联=级联类型.ALL)
Map myMap=newhashmap();
} 
我尝试过这个,但代码的结果是:


原因:org.hibernate.AnnotationException:使用@OneToMany或@ManyToMany针对未映射的类:mypackage.myClass.myMap[java.lang.Float]您不能将
@ManyToMany
整数
浮点
一起使用,因为这些类型是值类型,而不是实体。使用
@ElementCollection
(从Hibernate 3.5开始)或
@collectionfements
(在以前的版本中)

@ElementCollection
Map myMap=newhashmap();
另请参见:


为什么要在地图上添加
@manytomy
注释?这个注释是为了创建实体之间的关系(DB speak中的表)工作得很好,我看到它没有导入org.hibernate,所以它是JPA的一部分?@Roalt:Yes,
@ElementCollection
是JPA 2.0的一部分。如何覆盖映射生成列的名称?@SayoOladeji:key使用
@MapKeyColumn
,value使用
@Column
@ElementCollection
Map<Integer,Float> myMap = new HashMap<Integer, Float>();