2010-05-02 36 views
3

我对JPA(和我用作提供者的Hibernate)还是一个新的东西,所以也许这不可能是做了,但无论如何...在JPA中,一个嵌入值的映射,有一个嵌入式实体用作密钥

考虑下面的代码:

@Entity 
class Root { 
    @Id 
    private long id; 
    private String name; 

    @ElementCollection 
    private Map<ResourceType, Resource> resources; 
    ... 
} 

@Entity 
class ResourceType { 
    @Id 
    private long id; 

    private String name; 
} 

@Embeddable 
class Resource { 
    private ResourceType resourceType; 
    private long value; 
} 

在数据库中,有一个采集表“ Root_resources”,即存储地图的价值,但出现的资源类型两次(实际上是资源类型ID),一次作为地图的KEY,一次作为值的一部分。

有没有类似于说@MapKey注解的方法来表示键是值的列之一(即嵌入)?

+0

您是否找到解决方案?下面的工作是否正常? – Unda 2014-06-06 10:33:14

+0

[@ElementCollection with Map 其中实体是Embeddable的字段]的可能重复(https://stackoverflow.com/questions/11974096/elementcollection-with-mapentity-embeddable-where-entity-is-一个场的最-e)中 – Jules 2017-11-30 21:11:49

回答

0

我想你问的是一样的东西:

@MapKeyJoinColumn("RESOURCE_TYPE_ID") 

在ElementCollection。

然后,还可以为可嵌入资源类型的FK映射指定列名称。

相关问题