Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jpa 如何添加地图<;字符串,Person>;在实体类中?_Jpa_Dictionary_Eclipselink_Entity Relationship - Fatal编程技术网

Jpa 如何添加地图<;字符串,Person>;在实体类中?

Jpa 如何添加地图<;字符串,Person>;在实体类中?,jpa,dictionary,eclipselink,entity-relationship,Jpa,Dictionary,Eclipselink,Entity Relationship,我想添加一个映射作为 Map<String, Person> personMap; Map个人地图; 在实体类中,Person是实体。映射用于识别与字符串对应的确切的人(让它成为该人的昵称)。同一个人可能有不同的名字,无论何时给出任何名字,都必须找到同一个人 使用的持久性API是JPA,提供程序是EclipseLink。我应该使用什么注释以及如何使用?根据JSR-317的第2.7节,如果映射的值是一个实体(这是您的情况),则创建一个连接表,然后应该使用一个OneToMany/Ma

我想添加一个映射作为

Map<String, Person> personMap;
Map个人地图;
在实体类中,
Person
是实体。
映射
用于识别与
字符串
对应的确切的
(让它成为该人的昵称)。同一个人可能有不同的名字,无论何时给出任何名字,都必须找到同一个人


使用的持久性API是JPA,提供程序是EclipseLink。我应该使用什么注释以及如何使用?

根据JSR-317的第2.7节,如果映射的值是一个实体(这是您的情况),则创建一个连接表,然后应该使用一个OneToMany/ManyTone注释

对于键,如果它是基本类型,@MapKeyColumn可以用于自定义键的映射列。下面是我对你的例子的看法:

@OneToMany
@MapKeyColumn(name="person_nickname")
Map<String, Person> personMap;
@OneToMany
@MapKeyColumn(name=“person\u昵称”)
地图人物地图;
编辑:

经过一些测试,以下各项似乎运行良好:

@ElementCollection
@CollectionTable(name="<name_of_join_table>")
@MapKeyColumn(name="<name_of_map_key_in_table>")
Map<String, Person> personMap;
@ElementCollection
@CollectionTable(名称=“”)
@MapKeyColumn(名称=”)
地图人物地图;

上面生成了一个包含三个字段的联接表:一个用于映射持有者id,一个用于键,一个用于值。

效果很好,但在将映射项读入映射时,自动获取对我不起作用。