栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

JPA和Hibernate中@ MapKey,@ MapKeyColumn和@MapKeyJoinColumn之间的区别

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JPA和Hibernate中@ MapKey,@ MapKeyColumn和@MapKeyJoinColumn之间的区别

使用a时,

Map
您始终需要关联至少两个实体。假设我们有一个
Owner
与该
Car
实体相关的实体(
Car
具有FK
Owner
)。

所以,

Owner
就有了
Map
Car(s)

Map<X, Car>

@MapKey

@MapKey
会给你
Car's
用来集团的物业
Car
Owner
。例如,如果我们在中具有
vin
(车辆识别号)属性
Car
,则可以将其用作
carMap
键:

@Entitypublic class Owner {    @Id    private long id;    @oneToMany(mappedBy="owner")    @MapKey(name = "vin")    private Map<String, Car> carMap;}@Entitypublic class Car {    @Id    private long id;    @ManyToOne    private Owner owner;    private String vin;}

@MapKeyEnumerated

@MapKeyEnumerated
会使用枚举从
Car
,像
WheelDrive

@Entitypublic class Owner {    @Id    private long id;    @oneToMany(mappedBy="owner")    @MapKeyEnumerated(EnumType.STRING)    private Map<WheelDrive, Car> carMap;}@Entitypublic class Car {    @Id    private long id;    @ManyToOne    private Owner owner;    @Column(name = "wheelDrive")    @Enumerated(EnumType.STRING)    private WheelDrive wheelDrive;}public enum WheelDrive {    2WD,     4WD;  }

这将根据其WheelDrive类型对汽车进行分组。

@MapKeyTemporal

@MapKeyTemporal
会使用
Date
/
Calendar
场进行分组,像
createdOn

@Entitypublic class Owner {    @Id    private long id;    @oneToMany(mappedBy="owner")    @MapKeyTemporal(TemporalType.TIMESTAMP)    private Map<Date, Car> carMap;}@Entitypublic class Car {    @Id    private long id;    @ManyToOne    private Owner owner;    @Temporal(TemporalType.TIMESTAMP)    @Column(name="created_on")    private Calendar createdOn;         }

@MapKeyJoinColumn

@MapKeyJoinColumn
需要第三个实体,就像
Manufacturer
让你从这样一个联合体
Owner
,以
Car
与汽车也已经关联到
Manufacturer
,让您可以将所有
Owner's

Cars
Manufacturer

@Entitypublic class Owner {    @Id    private long id;    @oneToMany(mappedBy="owner")    @MapKeyJoinColumn(name="manufacturer_id")    private Map<Manufacturer, Car> carMap;}@Entitypublic class Car {    @Id    private long id;    @ManyToOne    private Owner owner;    @ManyToOne    @JoinColumn(name = "manufacturer_id")    private Manufacturer manufacturer;          }@Entitypublic class Manufacturer {    @Id    private long id;    private String name;}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/376661.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号