java - 如何使用注释在 hibernate 中映射 "Map"?

标签 java hibernate orm mapping

如何使用注释将实体中的字段映射到给定对象,该字段是字符串的“映射”(哈希表)?该对象被注释并且它的实例已经存储在 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/

相关文章:

用于搜索的 Java 中的 FTP 库

java - hibernate 未映射

hibernate - 在 Criteria Builder JPA 中访问子类属性

symfony - Doctrine 不映射它自己生成的实体

sql - 选择 ISAM 而不是 SQL

java - Jetty 响应字符编码

Java 8 : How to create a ZonedDateTime from an Epoch value?

java - 计划任务问题

python - 将SQLAlchemy映射类与python中的功能类分离

java - 如何在 Hibernate 中将 @OneToOne 关系映射到静态表