在JPA中,可嵌入值的Map,其中嵌入的实体用作键

时间:2010-05-02 18:29:09

标签: hibernate jpa

我还是JPA(和Hibernate,我正在使用它作为我的提供者)的新手,所以也许这不能做,但无论如何......

请考虑以下代码:

@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注释,表示该键是值的一列(即嵌入的)?

1 个答案:

答案 0 :(得分:0)

我认为你所要求的是:

@MapKeyJoinColumn("RESOURCE_TYPE_ID")
在ElementCollection上。

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

相关问题