java – 如何使用注释在hibernate中映射“Map”?

使用注释,如何在一个实体中映射一个字段,该实体是一个“Map”(Hashtable)的String给给对象?对象被注释,并且它的实例已经存储在hibernate数据库中。

我已经找到了使用简单的键和值来判断地图的语法:

<class name="Foo" table="foo">
    ...
    <map role="ages">
         <key column="id"/>
         <index column="name" type="string"/>
         <element column="age" type="string"/>
     </map>
 </class>

和一个实体奇怪的关键和一个简单的类型作为这样的价值:

<class name="Foo" table="foo">
    ...
  <map role="ages">
    <key column="id"/>
    <index-many-to-many column="person_id" 
         class="Person"/>
    <element column="age" type="string"/>
  </map>
</class>
<class name="Person" table="person">
    ...
    <property name="name" column="name" 
         type="string"/>
</class>

但是我看不到如何做一个简单的元素映射键,而我看不到如何使用注释。

您可以简单地使用JPA注释@MapKey(注意,JPA注释与Hibernate不同,Hibernate @MapKey映射一个保存地图键的数据库列,而JPA的注释映射用作映射关键字的属性)。

@javax.persistence.OneToMany(cascade = CascadeType.ALL)
@javax.persistence.MapKey(name = "name")
private Map<String, Person> nameToPerson = new HashMap<String, Person>();
http://stackoverflow.com/questions/2327971/how-do-you-map-a-map-in-hibernate-using-annotations

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:java – 如何使用注释在hibernate中映射“Map”?