如何使用注释将实体中的字段映射到给定对象,该字段是字符串的“映射”(哈希表)?该对象被注释并且它的实例已经存储在 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>();
关于java - 如何使用注释在 hibernate 中映射 "Map"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2327971/