gpt4 book ai didi

jpa - 如何在实体类中添加 Map

转载 作者:行者123 更新时间:2023-12-03 23:28:53 26 4
gpt4 key购买 nike

我想添加一个映射作为

Map<String, Person> personMap;

在实体类中,其中 Person是实体。 Map是准确识别 Person对应于 String (让它成为那个人的昵称)。同一个人可能有不同的名字,无论何时给出任何名字,都是相同的 Person必须找到。

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

最佳答案

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

至于key,如果是Basic Type,可以通过@MapKeyColumn自定义key的映射列。所以这是我对你的例子的看法:

@OneToMany
@MapKeyColumn(name="person_nickname")
Map<String, Person> personMap;

编辑:

经过一些测试,以下似乎工作得很好:
@ElementCollection
@CollectionTable(name="<name_of_join_table>")
@MapKeyColumn(name="<name_of_map_key_in_table>")
Map<String, Person> personMap;

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

关于jpa - 如何在实体类中添加 Map<String, Person>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7525320/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com