使用注释如何将实体中的字段映射为给定对象,该实体是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的批注将属性用作映射的键)。
@MapKey
@javax.persistence.OneToMany(cascade = CascadeType.ALL) @javax.persistence.MapKey(name = "name") private Map<String, Person> nameToPerson = new HashMap<String, Person>();