在 JPA 中以实体为键映射 Map

Posted

技术标签:

【中文标题】在 JPA 中以实体为键映射 Map【英文标题】:Mapping Map with an Entity as a key in JPA 【发布时间】:2012-07-04 08:15:55 【问题描述】:

是否可以映射:

@ManyToMany(cascade = Array(CascadeType.ALL), fetch = FetchType.EAGER)
Map<Entity, Double> quantities;

代替:

Map<Double, Entity>

?

如果不是,您如何映射例如购物篮中的商品数量(没有专用表)?

提前致谢, 埃塔姆。

【问题讨论】:

【参考方案1】:

是的,它可以在没有其他实体的情况下进行映射,例如,参见Hibernate: mapping many-to-many to Map。

还要注意,无论如何都会使用专用表,它可以映射为实体,也可以不映射。

【讨论】:

【参考方案2】:

您可以使用@ElementCollection 和@MapKeyJoinColumn,

见 http://en.wikibooks.org/wiki/Java_Persistence/Relationships#Map_Key_Columns_.28JPA_2.0.29

但这是一种不寻常的模型,您最好创建一个实体来映射到连接表。

【讨论】:

以上是关于在 JPA 中以实体为键映射 Map的主要内容,如果未能解决你的问题,请参考以下文章

JPA Map映射

如何从 JPA 注释的实体类生成 JPA 映射文件?

基于其他两个实体映射相关的 JPA 实体映射

将同一JPA实体多次映射到其他JPA实体

在 JPA 中映射为实体的关系表

JPA,如何使用同一个类(实体)来映射不同的表?