加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

jpa – 如何在实体类中添加地图?

发布时间:2020-12-14 05:22:48 所属栏目:Java 来源:网络整理
导读:我想添加一个映射 MapString,Person personMap; 在一个实体类中,其中Person是实体.地图是为了识别与字符串相对应的确切人物(让它成为该人的昵称).同一个人可能有不同的名字,只要给出任何一个名字,就必须找到同一个人. 使用的Persistance API是JPA,提供程序是
我想添加一个映射
Map<String,Person> personMap;

在一个实体类中,其中Person是实体.地图是为了识别与字符串相对应的确切人物(让它成为该人的昵称).同一个人可能有不同的名字,只要给出任何一个名字,就必须找到同一个人.

使用的Persistance API是JPA,提供程序是EclipseLink.我应该使用什么注释?

解决方法

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

对于键,如果是基本类型,则可以使用@MapKeyColumn来自定义键的映射列.所以这里是我的例子:

@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,一个用于密钥,一个用于该值.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读