【问题标题】:Persist a Map<Integer,Float> with JPA使用 JPA 持久化 Map<Integer,Float>
【发布时间】:2011-01-31 10:00:39
【问题描述】:

在类中保留以下地图的最佳方法是什么:

  @Entity
  class MyClass {


      @ManyToMany(cascade = CascadeType.ALL)    
      Map<Integer,Float> myMap = new HashMap<Integer, Float>(); 
  } 

我试过这个,但代码结果是:

原因:org.hibernate.AnnotationException:使用@OneToMany 或@ManyToMany 定位未映射的类:mypackage.myClass.myMap[java.lang.Float]

【问题讨论】:

  • 为什么要在地图上添加@ManyToMany 注释?此注释用于创建实体之间的关系(数据库中的表)

标签: java hibernate jpa


【解决方案1】:

您不能将@ManyToManyIntegerFloat 一起使用,因为这些类型是值类型,而不是实体。使用@ElementCollection(从Hibernate 3.5 开始)或@CollectionOfElements(在以前的版本中)。

@ElementCollection
Map<Integer,Float> myMap = new HashMap<Integer, Float>();  

另请参阅:

【讨论】:

  • 效果很好,我看到它不导入 org.hibernate 所以它是 JPA 的一部分?
  • @Roalt:是的,@ElementCollection 是 JPA 2.0 的一部分。
  • 如何覆盖生成的地图列的名称?
  • @SayoOladeji:使用@MapKeyColumn 作为键,使用@Column 作为值
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-20
  • 2021-07-20
  • 1970-01-01
  • 2013-01-02
  • 2013-11-12
  • 1970-01-01
相关资源
最近更新 更多